教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

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

f:id:m_kbou:20200420121620p: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")

 

使い方

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

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

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

[プログラミング例]:

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

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

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

f:id:m_kbou:20210423074217p:plain

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

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423074232p:plain

②結果は以下の様に表示されます。1年を足し算するため、MsgBoxで「2020/06/12」が表示されます。

f:id:m_kbou:20210423074246p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

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

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

[プログラミング例]:

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

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

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

f:id:m_kbou:20210423074545p:plain

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

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423074559p:plain

②結果は以下の様に表示されます。1ヵ月を足し算するため、MsgBoxで「2019/07/12」が表示されます。

f:id:m_kbou:20210423074614p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

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

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

[プログラミング例]:

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

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

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

f:id:m_kbou:20210423074835p:plain

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

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423074850p:plain

②結果は以下の様に表示されます。1日を足し算するため、MsgBoxで「2019/06/13」が表示されます。

f:id:m_kbou:20210423074937p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

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

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

[プログラミング例]:

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

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

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

f:id:m_kbou:20210423075114p:plain

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

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423075132p:plain

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

f:id:m_kbou:20210423075212p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

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

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

[プログラミング例]:

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

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

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

f:id:m_kbou:20210423075325p:plain

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

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423075339p:plain

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

f:id:m_kbou:20210423075354p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

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

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

[プログラミング例]:

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

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

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

f:id:m_kbou:20210423075531p:plain

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

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423075545p:plain

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

f:id:m_kbou:20210423075619p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

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