VBA DateAdd関数

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 7月 18, 2022

DateAddの説明

VBAのDateAdd関数を使うと、日付や時刻に日、月、年、時間、四半期などを加える(または引く)ことができます。

簡単なDateAddの例

以下は、簡単なDateAddの例です。

Sub DateAdd_Day()
    MsgBox DateAdd("d", 20, #4/1/2021#)
End Sub

このコードは、2021年4月1日の日付に20日(”d “で表示)を追加します。

vba dateadd function

Intervalの引数を “d “から “m “に変更すると、2021年4月1日の日付に20ヶ月を追加することができます。

Sub DateAdd_Month()
    MsgBox DateAdd("m", 20, #4/1/2021#)
End Sub

vba dateadd months

メッセージボックスに日付を表示する代わりに、変数に代入することも出来ます。

Sub DateAdd_Day2()
    Dim dt as Date    
    dt = DateAdd("d", 20, #4/1/2021#)

    MsgBox dt
End Sub

DateAddの構文

VBA EditorでDateAdd()と入力すると、DateAdd関数の構文が表示されます。

vba dateadd syntax

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

また、日付を含むセルを参照することもできます。

dateadd function cellvalue

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

vba dates format

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples