いつも参考にさせていただいてます。よろしくお願いします。
ExcelのVBAで作成しております。
例えば2004/4/26〜2004/5/14までの日付を、新規のSheetの一行目に
一日づつ入れたいと思っています。
できれば土日祝はセルの色を変えたいです。
日付の間隔を知る方法と、土日祝を取得する方法はありますか?
マクロの記録を使えばある程度分かるのでは。
・ ツール -> マクロ -> 記録
・ A1 に 2004/4/26 と入力
・ A1 の右下の+をクリックしたまま右に 2004/5/14 までドラッグ
・ マクロの記録終了
・ VBE の起動
ってな感じ。
土日の判断は WeekDay 関数か何かがあったと思います。
祝日の判断はできません。自作して下さい。
回答1412さんレスありがとうございます。
ちょっと違うみたいなので補足させてください。
例えば、別のシートのA1に2004/4/26 A2に2004/5/14 があるとして
この二つのセルの値から新規のSheetの一行目に2004/4/26〜2004/5/14までの日付を一日づつ入れるにはどうしたらいいですか?
>日付の間隔
セルに日付型でデータが入ってるならセル上では単純に引き算で
出てきますね。
= A2 - A1
1990/1/18って出たらセルの書式を数値型にしてみればいいです。
コードで書くなら DateDiff とか…使用方法は過去ログ検索で。
あとは回答1412さんの方法で出来ますね。
>使用方法は過去ログ検索で。
というかエクセルのヘルプ見たほうが早いですよね(汗)
DateDiff って書いて F1 キーでヘルプを表示させてください。
特攻隊長まるるうさんありがとうございます。
・ ツール -> マクロ -> 記録
・ 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)) にするとエラーが出ます。
間違っていますか?
謎なエラーだね(^^;)こーゆー場合は、まず
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") とした時の
プロパティを全て比べたりしたら分かるかも?。
あ。微妙に分かりました。複数エリアの定義みたいに認識されていると
思われます。Areas を限定してやる必要があるみたいです。
Cells(1, 1).AutoFill Destination:=Range(Cells(1, 1), Cells(1, 13)).Areas(1), Type:=xlFillDefault