VBAで日付の足し算や引き算をする方法をまとめてみました。
たとえば、2021年5月17日の7日後は何日か?簡単に暗算できれば2021年5月24日って答えられるかもしれませんが、これをVBAでプログラミングするには、DateAdd
関数を使います。
DateAdd関数
DateAdd関数は以下の引数をもちます。
- interval : 加算する時間間隔を表す文字列です。
- number : 加算する数字(マイナスでもOK)
- date : 加算する日付(Date型)
例
以下のように、引数3つを指定してDateAdd関数を使用します。
Dim DateValue1 As Date
DateValue1 = #2/29/2020 10:00:00 AM#
MsgBox dateadd("yyyy", 1, DateValue1)
加算する時間間隔を表す文字列
値 | 説明 | 実行例 |
---|---|---|
yyyy | 年 | dateadd(“yyyy”, 1, #2/29/2020 10:00:00 AM#) = 2021/02/28 10:00:00 |
q | 四半期 | dateadd(“q”, 1, #2/29/2020 10:00:00 AM#) = 2020/05/29 10:00:00 |
m | 月 | dateadd(“m”, 1, #2/29/2020 10:00:00 AM#) = 2020/03/29 10:00:00 |
y | 通年での日数 | dateadd(“y”, 1, #2/29/2020 10:00:00 AM#) = 2020/03/01 10:00:00 |
d | 日 | dateadd(“d”, 1, #2/29/2020 10:00:00 AM#) = 2020/03/01 10:00:00 |
w | 平日 | dateadd(“w”, 1, #2/29/2020 10:00:00 AM#) = 2020/03/01 10:00:00 |
ww | 週 | dateadd(“ww”, 1, #2/29/2020 10:00:00 AM#) = 2020/03/07 10:00:00 |
h | 時 | dateadd(“h”, 1, #2/29/2020 10:00:00 AM#) = 2020/02/29 11:00:00 |
n | 分 | dateadd(“n”, 1, #2/29/2020 10:00:00 AM#) = 2020/02/29 10:01:00 |
s | 秒 | dateadd(“s”, 1, #2/29/2020 10:00:00 AM#) = 2020/02/29 10:00:01 |
返却される日付の表示形式はコントロールパネルの「地域」設定値によって決まる
上記の例では yyyy/MM/dd H:mm:ss
ですが、これはコントロールパネルの「地域」から取得されます。
この設定を変更することで表示形式を変更可能ですが、変更したい場合はFormat関数の使用を検討しましょう。