前日・翌日などの日付の計算

DateAdd関数を使用して日付データの計算を行うコード、時刻の計算も行えます

'前日の日付を取得
Debug.Print DateAdd("d", -1, Date)
'翌日の日付を取得
Debug.Print DateAdd("d", 1, Date)

日付データを計算するには「DateAdd」関数を使用します

関数の書式

引数(太字は必須引数)
(interval, number, date)
戻り値の型 variant型(date)

その他の計算範囲は以下になります

'1年後の日付を取得
Debug.Print DateAdd("yyyy", 1, Date)
'1月後の日付を取得
Debug.Print DateAdd("m", 1, Date)
'1週後の日付を取得
Debug.Print DateAdd("ww", 1, Date)
'3時間後の日付を取得
Debug.Print DateAdd("h", 3, Now)
'30分後の日付を取得
Debug.Print DateAdd("n", 30, Now)
'300秒後の日付を取得
Debug.Print DateAdd("s", 300, Now)

関数の解説

1つ目の引数「interval」に計算したい範囲を文字列で指定します
ここはDatePart関数の記事を確認してください
(DatePart関数の記事はこちらから)

3つ目の引数「date」は、計算前の日付データです

2つ目の引数「number」は、引数「date」に計算する数値を指定します
一応小数点数値も指定できますが、整数値に丸め処理が行われるため、使用する意味はありません
ここで「-」を数値に付けることで、減算を行うことが出来ます
付けなければ加算になります

日数であれば、シリアル値は整数値になっているので普通に四則演算で事足りますがその結果が数値として返されるか日付データとして返されるかは計算の状況によります
対して、この関数は結果をdate型で返すので安心設計です

また、時刻データは小数点数値であるため正確に1分や13秒などの時刻を計算するのは困難です

この関数を使用すれば、そこを整数値で計算させることができるので時刻の計算にはまずこの関数を使用するのがいいです

また、時刻の計算に関して例コードではNow関数を使用していますが、Time関数という現在時刻を取得する関数でも計算は可能です
ですが、日付をまたぐ計算を行った場合には日付が初期値が入ってしまい、うまく計算ができない可能性がありますので時刻データではなく日付データで計算したほうが分かり易いと思います
ただ、時刻のみのデータに日付データも付与される形になるのでセルに入力する際は注意が必要です

この関数を使用して計算を行うと上位の日付がしっかり繰り上がっていく点にも利点があります
月は12進法、日にちは28から31進法、時は24進法、分・秒は60進法と、書いてみると日付データの繰り上げがいかに面倒かがよくわかります
(進法とは、その数値で桁上がりをすることをいいます。日常で使う「…8,9,10,11…」の様に9から10で、桁が上がるものを10進法といいます)
もちろん減算時の繰り下げも同様に行われます