教えて!ExcelVBA!

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

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

f:id:m_kbou:20200420121620p:plain

 

 

構文

記述方法は以下の通りとなります。

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

[説明]:

指定日に対し指定した単位の期間(日数)を加算又は減算して値を返します。

[単位] 期間を表す単位文字を記述します。
具体的には以下表の単位文字いずれかを記述します。
※「”」(ダブルクォーテーション)で囲みます。
[加算・減算数] [指定日]に対して加算又は減算する数を記述します。
[指定日] 基準となる日時を記述します。
※「”」(ダブルクォーテーション)で囲みます。
単位文字 単位
yyyy

[記述例]:

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つの日付の間隔を表示)があります。こちらも合わせて覚えておくと、データ処理の幅が広がります。