【VBA】日付を加算する方法(DateAdd関数)
今回はVBAで日付を加算(例えば翌日にする)する方法を紹介します。
日付だけであれば+や-によって加算することができますが、DateAdd関数を使うのがおすすめです。
(この関数を使えば日付だけでなく月や年も加算できます)
この記事では次のようなことが分かります。
- 日付を加算する
- 日付を減算する
- 月や年を加算/減算する
- 分や秒を加算/減算する
日付を加算/減算する方法(DateAdd関数)
Sub DateAdd1()
Dim dt As Date
dt = Date '今日
Debug.Print dt '今日
Debug.Print DateAdd("d", 1, dt) '前日
Debug.Print DateAdd("d", -1, dt) '翌日
End Sub
DateAddは次のように引数を指定します。
DateAdd(単位, 加算時間, 日時)
今回は日付を変更するため単位には"d"を指定しています。("d"はDayのd)
サンプルコードでは加算時間に1と-1を入れて、それぞれ前日と翌日の日付を得ています。
そして、日時には基準となる日付を入れます。
サンプルコードでは日時に今日の日付が入るようにしています。
このように日付を加算/減算するときにはDateAdd関数に"d"を入れます。
月や年を加算/減算する方法(DateAdd関数)
Sub DateAdd2()
Dim dt As Date
dt = Date '今日
Debug.Print dt '今日
Debug.Print DateAdd("m", 1, dt) '翌月
Debug.Print DateAdd("yyyy", 1, dt) '翌年
End Sub
DateAdd関数は日付だけでなく、月や年の加算/減算も可能です。
日付では"d"を入れましたが、ここを"m"や"yyyy"とすれば月や年の加算/減算ができます。
時間や分や秒も加算/減算可能(DateAdd関数)
Sub DateAdd3()
Dim str As String
Dim dt As Date
str = "2023/03/03 0:00:00"
dt = CDate(str) '日付型に変換
Debug.Print DateAdd("h", 1, dt) '1時間後
Debug.Print DateAdd("n", 1, dt) '1分後
Debug.Print DateAdd("s", 1, dt) '1秒後
End Sub
さらに時間や分や秒も加算/減算ができます。
単位を"h"、"n"、"s"とすれば時間、分、秒の加算/減算ができます。
なお、基準となる日付は分かりやすくするために秒("2023/03/03 0:00:00″)まで記載しています。
秒までの日付をString型で作ってCDate関数で日付型に変換しています。
CDate関数については↓の記事をご覧ください。