サイトアイコン エントレ|演劇動画ニュース

エクセルマクロ(EXCEL VBA) その22 今日の日付を取得(NowとDate)

エクセルマクロ(EXCEL VBA)

今日の日付を取得してみましょう

エクセルマクロを使って、今日の日付を取得することができます。
A1に、今日の日付を入れるマクロを作ってみましょう。

Sub hiduke()
Cells(1, 1) = Now
End Sub

と、打ち込んでください。
これを実行すると、

A1に、今日の日付と、今の時刻が打ち込まれました!
時刻は必要なくて、日時だけでいい場合は、NowをDateに修正してください。

Sub hiduke()
Cells(1, 1) = Date
End Sub

これを実行すると、

日付はそのままで時刻が0:00になりました。
普通、日付を扱いたいときは、こちらのDateを使うのが良さそうです。

では、A2には、08月23日(火)と表示させたい時はどうしたらいいでしょうか?

formatという関数を使うことで、表現したい形式に変更するこができます。
以下のようにコードを修正してください。

Sub hiduke()
Cells(1, 1) = Date
Cells(2, 1) = Format(Date, "mm月dd日(aaa)")
End Sub

これを実行すると

日付の形式を変更できました。

 

明日の日付は?

では、明日の日付を取得するにはどうしたらいいでしょうか?

DateAddという関数を用いることで1日進めることができます。
ということで、A3には、明日の日付を入れてみましょう。

こちらのコードを追加してください。

Cells(3, 1) = DateAdd("d", 1, Date)

“d” はDayの意味、1は1日、Dateは今日の日付を呼び出すものなので、
A3に、「今日の日付に、+1日 追加したもの」を入れる ということです。

これを実行すると、

明日の日付が入れられました!

今日から10日後までの日付リストを作る

明日の日付が取得できるようになったので、試しに今日から10日後までの縦長カレンダーを作ってみましょう。

新しいマクロを作り、まず、A1に今日の日付を入れます。

Sub hiduke_list()
Cells(1, 1) = Format(Date, "mm月dd日(aaa)")
End Sub

そして、A2には、明日の日付を入れたいので、

Cells(2, 1) = DateAdd("d", 1, Date)

とすればいいですが、このままだと形式が違ってしまいます。

形式を合わせたいので、さらにFormatで囲みましょう。

Sub hiduke_list()
Cells(1, 1) = Format(Date, "mm月dd日(aaa)")
Cells(2, 1) = Format(DateAdd("d", 1, Date), "mm月dd日(aaa)")
End Sub

これで形式も合わせられました。

ということで、あとはFor Nextで10日分繰り返しましょう。

Sub hiduke_list()
Cells(1, 1) = Format(Date, "mm月dd日(aaa)")
For i = 1 To 10
    Cells(i + 1, 1) = Format(DateAdd("d", i, Date), "mm月dd日(aaa)")
Next
End Sub

これを実行すると、

10日後までの縦長カレンダーができました。

 

宿題-22

今日の日付をA1に入れて、B1に明日、C1に明後日という具合に続けて今日から20日後までの横長カレンダーを作ってください。
ただし、日付のフォーマットは 8/23(火) という形式にしてください。

▼ クリックで解説を表示

解説

まず、A1に今日の日付を 8/23(火) という形式で入るようにしてみましょう。

Sub hiduke_yoko()
Cells(1, 1) = Format(Date, "m/d(aaa)")
End Sub

次に、B1に、明日の日付を入れます。

Sub hiduke_yoko()
Cells(1, 1) = Format(Date, "m/d(aaa)")
Cells(1, 2) = Format(DateAdd("d", 1, Date), "m/d(aaa)")
End Sub

うまく入れられたので、For Nextで20回繰り返します。
これで完成です。

Sub hiduke_yoko()
'今日の日付を取得してA1に入れる
Cells(1, 1) = Format(Date, "m/d(aaa)")

'20回繰り返す
For i = 1 To 20
    '明日の日付を取得して形式を整える
    Cells(1, i + 1) = Format(DateAdd("d", i, Date), "m/d(aaa)")
Next

End Sub

答えファイルのダウンロード

 
(文:森脇孝/エントレ)

モバイルバージョンを終了