VBA DateAdd関数
In this Article
DateAddの説明
VBAのDateAdd関数を使うと、日付や時刻に日、月、年、時間、四半期などを加える(または引く)ことができます。
簡単なDateAddの例
以下は、簡単なDateAddの例です。
Sub DateAdd_Day()
MsgBox DateAdd("d", 20, #4/1/2021#)
End Sub
このコードは、2021年4月1日の日付に20日(”d “で表示)を追加します。
Intervalの引数を “d “から “m “に変更すると、2021年4月1日の日付に20ヶ月を追加することができます。
Sub DateAdd_Month()
MsgBox DateAdd("m", 20, #4/1/2021#)
End Sub
メッセージボックスに日付を表示する代わりに、変数に代入することも出来ます。
Sub DateAdd_Day2()
Dim dt as Date
dt = DateAdd("d", 20, #4/1/2021#)
MsgBox dt
End Sub
DateAddの構文
VBA EditorでDateAdd()と入力すると、DateAdd関数の構文が表示されます。
DateAdd関数には3つの引数があります。
Interval:時間単位。(日、月、年、など。)文字列で入力する。(例:月の場合は “m”)
設定方法 | 設定内容 |
---|---|
yyyy | 年 |
q | 四半期 |
m | 月 |
y | 年間通算日 |
d | 日 |
w | 平日 |
ww | 週 |
h | 時間 |
n | 分 |
s | 秒 |
Number:追加する時間単位を表す数値。(例:20を追加する場合は20)
Date:元の日付。次の項を参照。
Excel VBAでのDateAdd関数の使用例
日付を参照する
まずは、VBAのDateAdd関数を使って、さまざまな方法で日付を参照するデモを行います。 これらのDateAdd関数は、それぞれ同じ結果を生成します。
Sub DateAdd_ReferenceDates()
MsgBox DateAdd("m", 2, #4/1/2021#)
MsgBox DateAdd("m", 2, DateSerial(2021, 4, 1))
MsgBox DateAdd("m", 2, DateValue("April 1, 2021"))
End Sub
また、日付を含むセルを参照することもできます。
Sub DateAdd_ReferenceDates_Cell()
MsgBox DateAdd("m", 2, Range("C2").Value)
End Sub
また、日付変数を作成して参照してもよいでしょう。
Sub DateAdd_Variable()
Dim dt As Date
dt = #4/1/2021#
MsgBox DateAdd("m", 2, dt)
End Sub
日付の足し算、引き算
日付に足し算をする方法はすでに紹介しました。
Sub DateAdd_Day2()
Dim dt as Date
dt = DateAdd("d", 20, #4/1/2021#)
MsgBox dt
End Sub
負の数(例:20の代わりに-20)を使用すると、日付から引き算をすることができます。
Sub DateAdd_Day()
Dim dt as Date
dt = DateAdd("d", -20, #4/1/2021#)
MsgBox dt
End Sub
異なる時間単位の足し算
年
Sub DateAdd_Years()
MsgBox DateAdd("yyyy", 4, #4/1/2021#)
End Sub
四半期
Sub DateAdd_Quarters()
MsgBox DateAdd("q", 2, #4/1/2021#)
End Sub
月
Sub DateAdd_Months()
MsgBox DateAdd("m", 2, #4/1/2021#)
End Sub
年間通算日
Sub DateAdd_DaysofYear()
MsgBox DateAdd("y", 2, #4/1/2021#)
End Sub
日
Sub DateAdd_Days3()
MsgBox DateAdd("d", 2, #4/1/2021#)
End Sub
平日
Sub DateAdd_Weekdays()
MsgBox DateAdd("w", 2, #4/1/2021#)
End Sub
週
Sub DateAdd_Weeks()
MsgBox DateAdd("ww", 2, #4/1/2021#)
End Sub
今日に追加
以下の例では、日付関数を使用して今日に時間の単位を追加します。
Sub DateAdd_Year_Test()
Dim dtToday As Date
Dim dtLater As Date
dtToday = Date
dtLater = DateAdd("yyyy", 1, dtToday)
MsgBox "1年後は" & dtLater
End Sub
Sub DateAdd_Quarter_Test()
MsgBox "2四半期後は" & DateAdd("q", 2, Date)
End Sub
時間の足し算、引き算
DateAdd関数は、時刻を扱う場合にも動作します。 ここでは、時刻を足す(または引く)例をいくつか紹介します。
時間
この例では、時刻に2時間を加算します。
Sub DateAdd_Hour()
MsgBox DateAdd("h", 2, #4/1/2021 6:00:00#)
End Sub
分
現在の時刻から120分を引きます。
Sub DateAdd_Minute_Subtract()
MsgBox DateAdd("n", -120, Now)
End Sub
秒
Sub DateAdd_Second()
MsgBox DateAdd("s", 2, #4/1/2021 6:00:00#)
End Sub
日付の書式設定
Excelやユーザーフォーム、メッセージボックスなどで日付(または時刻)を表示する場合、Format関数を用いて日付の表示方法を指定する必要があります。 以下にいくつかの例を示します。
Sub FormattingDatesTimes()
'現在の日付と時刻を返す (2021年7月2日 9時10分の場合)
dt = Now()
'-> 07/02/2021
Range("B2") = Format(dt, "mm/dd/yyyy")
'-> July 2, 2021
Range("B3") = Format(dt, "mmmm d, yyyy")
'-> 07/02/2021 09:10
Range("B4") = Format(dt, "mm/dd/yyyy hh:mm")
'-> 7.2.21 9:10 AM
Range("B5") = Format(dt, "m.d.yy h:mm AM/PM")
End Sub