エクセルマクロ(EXCEL VBA)

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

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

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

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

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

A1に、今日の日付が入力された

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日後までのカレンダーになった

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

 

宿題-22

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

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

関連記事一覧