日付や時間を計算する方法を紹介します。10秒後、3分前、1時間後、一昨日、半年後、去年、10年後などですね。VBAにはDateAddという便利な関数が用意されています。うるう年も考慮してくれる優れものです。
DatAdd関数で解決する
DateAdd関数では、第1引数に日時間隔を指定します。指定できる日時間隔は以下となります。第2引数には計算したい数値を指定します。正の数値は未来、負の数値は過去を表します。
注意事項としては、年の演算は”y”ではなく”yyyy”を指定する必要があることです。
日時間隔 | 説明 |
yyyy | 年 |
q | 四半期 |
m | 月 |
y | 通年での日数 |
d | 日 |
w | 平日 |
ww | 週 |
h | 時 |
n | 分 |
s | 秒 |
サンプルプログラムを確認する(コピペOK)
Sub sample()
' 秒の演算
Debug.Print DateAdd("s", 1, "2019/6/15 13:10:5") '2019/06/15 13:10:06
Debug.Print DateAdd("s", 61, "2019/6/15 13:10:5") '2019/06/15 13:11:06
Debug.Print DateAdd("s", -1, "2019/6/15 13:10:5") '2019/06/15 13:10:04
' 分の演算
Debug.Print DateAdd("n", 1, "2019/6/15 13:10:5") '2019/06/15 13:11:05
Debug.Print DateAdd("n", 61, "2019/6/15 13:10:5") '2019/06/15 14:11:05
Debug.Print DateAdd("n", -1, "2019/6/15 13:10:5") '2019/06/15 13:09:05
' 時の演算
Debug.Print DateAdd("h", 1, "2019/6/15 13:10:5") '2019/06/15 14:10:05
Debug.Print DateAdd("h", 12, "2019/6/15 13:10:5") '2019/06/16 1:10:05
Debug.Print DateAdd("h", -1, "2019/6/15 13:10:5") '2019/06/15 12:10:05
' 日の演算
Debug.Print DateAdd("d", 1, "2019/6/15") '2019/06/16
Debug.Print DateAdd("d", 3, "2019/6/30") '2019/07/03
Debug.Print DateAdd("d", -1, "2019/7/1") '2019/06/30
' 月の演算
Debug.Print DateAdd("m", 1, "2019/6/15") '2019/07/15
Debug.Print DateAdd("m", 1, "2019/5/31") '2019/06/30
Debug.Print DateAdd("m", 2, "2019/12/31") '2020/02/29
Debug.Print DateAdd("m", -1, "2019/3/31") '2019/02/28
' 年の演算は'yyyy' 注意
Debug.Print DateAdd("yyyy", 1, "2019/12/31") '2020/12/31
Debug.Print DateAdd("yyyy", 1, "2020/2/29") '2021/02/28
End Sub