日付をExcelのシートに書き出すには?


ど素人  2004-04-07 20:33:56  No: 112712  IP: [192.*.*.*]

いつも参考にさせていただいてます。よろしくお願いします。
ExcelのVBAで作成しております。
例えば2004/4/26〜2004/5/14までの日付を、新規のSheetの一行目に
一日づつ入れたいと思っています。
できれば土日祝はセルの色を変えたいです。
日付の間隔を知る方法と、土日祝を取得する方法はありますか?

編集    削除
回答1412  2004-04-07 21:16:55  No: 112713  IP: [192.*.*.*]

マクロの記録を使えばある程度分かるのでは。

・ ツール -> マクロ -> 記録
・ A1 に 2004/4/26 と入力
・ A1 の右下の+をクリックしたまま右に 2004/5/14 までドラッグ
・ マクロの記録終了
・ VBE の起動
ってな感じ。

土日の判断は WeekDay 関数か何かがあったと思います。
祝日の判断はできません。自作して下さい。

編集    削除
ど素人  2004-04-08 00:27:46  No: 112714  IP: [192.*.*.*]

回答1412さんレスありがとうございます。
ちょっと違うみたいなので補足させてください。
例えば、別のシートのA1に2004/4/26 A2に2004/5/14 があるとして
この二つのセルの値から新規のSheetの一行目に2004/4/26〜2004/5/14までの日付を一日づつ入れるにはどうしたらいいですか?

編集    削除
特攻隊長まるるう  2004-04-08 01:23:59  No: 112715  IP: [192.*.*.*]

>日付の間隔
セルに日付型でデータが入ってるならセル上では単純に引き算で
出てきますね。
 = A2 - A1
1990/1/18って出たらセルの書式を数値型にしてみればいいです。

コードで書くなら DateDiff とか…使用方法は過去ログ検索で。

あとは回答1412さんの方法で出来ますね。

編集    削除
特攻隊長まるるう  2004-04-08 01:28:14  No: 112716  IP: [192.*.*.*]

>使用方法は過去ログ検索で。
というかエクセルのヘルプ見たほうが早いですよね(汗)
DateDiff って書いて F1 キーでヘルプを表示させてください。

編集    削除
ど素人  2004-04-08 02:44:47  No: 112717  IP: [192.*.*.*]

特攻隊長まるるうさんありがとうございます。 
・ ツール -> マクロ -> 記録
・ A1 に 2004/4/1 と入力
・ A1 の右下の+をクリックしたまま右に 2004/4/13 までドラッグ
・ マクロの記録終了
の結果
Selection.AutoFill Destination:=Range("A1:M1"), Type:=xlFillDefault
    Range("A1:M1").Select
でできそうなのはわかったのですが、Rengeのカッコの中をcells
の形(cells(1,1),cells(1,13)) にするとエラーが出ます。
間違っていますか?

編集    削除
特攻隊長まるるう  2004-04-08 18:53:59  No: 112718  IP: [192.*.*.*]

謎なエラーだね(^^;)こーゆー場合は、まず
    Debug.Print (Range(Cells(1, 1), Cells(1, 13)).Address)
なんかで Range の指定が間違ってない事を確認して
AutoFill のヘルプで条件に合ってるか調べて…
間違ってなかったら色々と…都合のいいように変更して実行してみて…
    Cells(1, 1).AutoFill Destination:=Range(Range(Cells(1, 1), Cells(1, 13)).Address), Type:=xlFillDefault
こんなので成功してみたりして…何かが気に食わんのでしょう(汗)。
エクセルはボクにとって未知の生命体に近いので、謎です。
Range(Cells(1, 1), Cells(1, 13)) と Range("A1:M1") とした時の
プロパティを全て比べたりしたら分かるかも?。

編集    削除
特攻隊長まるるう  2004-04-08 20:20:11  No: 112719  IP: [192.*.*.*]

あ。微妙に分かりました。複数エリアの定義みたいに認識されていると
思われます。Areas を限定してやる必要があるみたいです。
    Cells(1, 1).AutoFill Destination:=Range(Cells(1, 1), Cells(1, 13)).Areas(1), Type:=xlFillDefault

編集    削除