まさ工房

ExcelVBAとAcessDBを利用した業務支援ツールを作成する工房です

【Excelマクロ・VBA】DateAdd関数で指定された日数を加算・減算するにはどうすればいいの?使い方を教えて!

       f:id:m_kbou:20190612102118p:plain

DateAdd関数は、指定した日付に指定した日数を加算・減算した日付を返します。使い方について説明します。

 

【目次】

 

構文

DateAdd関数の記述方法は、以下の通りとなります。

=======================================================================

DateAdd(”[単位], [加算・減算数], [指定日]

=======================================================================

[説明]:

[単位]には、期間の単位を表す文字を指定します。[単位]は以下表のいづれかを指定します。[加算・減算数]には、指定日に対し加算や減算する数字を指定します。[指定日]には、基準となる日時を指定します。[単位]及び[指定日]は、「”」(ダブルクォーテーション)で囲みます。内容を纏めると、「[指定日]に[加算・減算数]で指定した数字を加算又は減算し、値を返して下さい。」との意味になります。

f:id:m_kbou:20190612102536p:plain

[記述例]:

DateAdd("yyyy", 1, "2019/6/12")
DateAdd("m", 1, "2019/6/12")
DateAdd("d", 1, "2019/6/12")
DateAdd("h", 1, "2019/6/12 10:35:40")
DateAdd("n", 1, "2019/6/12 10:35:40")
DateAdd("s", 1, "2019/6/12 10:35:40")

 

使い方

使い方について、具体的に説明していきます。

指定年数を加算・減算した日付を返す

指定日に対し指定した年数を加算・減算した日付を返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「yyyy」を記述します。

-------------------------------------------------

Sub サンプル()
    MsgBox DateAdd("yyyy", 1, "2019/6/12")
End Sub

-------------------------------------------------

内容は、「指定日:2019/6/12に1年を足した日付を返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、1年を足し算するため「2020/6/12」がMsgBoxに表示されます。

f:id:m_kbou:20190612102156p:plain

指定した年数を加算・減算した日付を返す方法についての説明は以上です。

 

指定月数を加算・減算した日付を返す

指定日に対し指定した月数を加算・減算した日付を返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「m」を記述します。

-------------------------------------------------

Sub サンプル()
    MsgBox DateAdd("m", 1, "2019/6/12")
End Sub

-------------------------------------------------

内容は、「指定日:2019/6/12に1ヵ月を足した日付を返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、1ヵ月を足し算するため「2019/7/12」がMsgBoxに表示されます。

f:id:m_kbou:20190612102212p:plain

指定した月数を加算・減算した日付を返す方法についての説明は以上です。

 

指定日数を加算・減算した日付を返す

指定日に対し指定した日数を加算・減算した日付を返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「d」を記述します。

-------------------------------------------------

Sub サンプル()
    MsgBox DateAdd("d", 1, "2019/6/12")
End Sub

-------------------------------------------------

内容は、「指定日:2019/6/12に1日を足した日付を返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、1日を足し算するため「2019/6/13」がMsgBoxに表示されます。

f:id:m_kbou:20190612102226p:plain

指定した日数を加算・減算した日付を返す方法についての説明は以上です。

 

指定時間を加算・減算した日時を返す

指定日時に対し指定した時間を加算・減算した日時を返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「h」を記述します。

-------------------------------------------------

Sub サンプル()
    MsgBox DateAdd("h", 1, "2019/6/12 10:35:40")
End Sub

-------------------------------------------------

内容は、「指定日:2019/6/12 10:35:40に1時間を足した日付を返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、1時間を足し算するため「2019/6/12 11:35:40」がMsgBoxに表示されます。

f:id:m_kbou:20190612102241p:plain

指定した時間を加算・減算した日時を返す方法についての説明は以上です。

 

指定分数を加算・減算した日時を返す

指定日時に対し指定した分数を加算・減算した日時を返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「n」を記述します。(「m」と間違えやすいので注意して下さい)

-------------------------------------------------

Sub サンプル()
    MsgBox DateAdd("n", 1, "2019/6/12 10:35:40")
End Sub

-------------------------------------------------

内容は、「指定日:2019/6/12 10:35:40に1分を足した日付を返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、1分を足し算するため「2019/6/12 10:36:40」がMsgBoxに表示されます。

f:id:m_kbou:20190612102255p:plain

指定した分数を加算・減算した日時を返す方法についての説明は以上です。

 

指定秒数を加算・減算した日時を返す

指定日時に対し指定した秒数を加算・減算した日時を返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「s」を記述します。

-------------------------------------------------

Sub サンプル()
    MsgBox DateAdd("s", 1, "2019/6/12 10:35:40")
End Sub

-------------------------------------------------

内容は、「指定日:2019/6/12 10:35:40に1秒を足した日付を返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、1秒を足し算するため「2019/6/12 10:35:41」がMsgBoxに表示されます。

f:id:m_kbou:20190612102306p:plain

指定した秒数を加算・減算した日時を返す方法についての説明は以上です。

 

おわりに

今回は、DateAdd関数の使い方について説明しました。類似の関数にDateDiff関数(2つの日付の間隔を表示)があります。こちらも合わせて覚えておくと、データ処理の幅が広がります。