VBAで2つのDate型の差を算出する方法を紹介します。
たとえば、2021年5月17日と2021年5月24の差は7日ですが、これをVBAでプログラミングするには、DateDiff
関数を使います。
DateDiff関数 構文
- DateDiff(interval, date1, date2, firstdayofweek, firstweekofyear)
DateDiff関数は以下の引数をもちます。
- interval : date1 と date2 の時間間隔の計算に使用する時間単位を表す文字列式です。
- date1: 計算に使用する日付
- date2: 計算に使用する日付
- firstdayofweek: 省略可能。 週の始まりの曜日を表す定数です。 省略すると、日曜日を指定したものと見なされます。
- firstweekofyear: 省略可能。 年の第 1 週を指定する定数です。 省略すると、1 月 1 日を含む週が第 1 週と見なされます。
例
以下のように、引数3つを指定してDateAdd関数を使用します。
Dim DateValue1 As Date
DateValue1 = #2/29/2020 10:00:00 AM#
Dim DateValue2 As Date
DateValue2 = #2/28/2021 8:00:00 PM#
MsgBox (DateDiff("yyyy", DateValue1, DateValue2))
時間単位を表す文字列式
値 | 説明 | 実行例 |
---|---|---|
yyyy | 年 | DateDiff(“yyyy”, #2/29/2020 10:00:00 AM#, #2/28/2021 8:00:00 PM#) = 1 |
q | 四半期 | DateDiff(“q”, #2/29/2020 10:00:00 AM#, #2/28/2021 8:00:00 PM#) = 4 |
m | 月 | DateDiff(“m”, #2/29/2020 10:00:00 AM#, #2/28/2021 8:00:00 PM#) = 12 |
y | 通年での日数 | DateDiff(“y”, #2/29/2020 10:00:00 AM#, #2/28/2021 8:00:00 PM#) = 365 |
d | 日 | DateDiff(“d”, #2/29/2020 10:00:00 AM#, #2/28/2021 8:00:00 PM#) = 365 |
w | 平日 | DateDiff(“w”, #2/29/2020 10:00:00 AM#, #2/28/2021 8:00:00 PM#) = 52 |
ww | 週 | DateDiff(“ww”, #2/29/2020 10:00:00 AM#, #2/28/2021 8:00:00 PM#) = 53 |
h | 時 | DateDiff(“h”, #2/29/2020 10:00:00 AM#, #2/28/2021 8:00:00 PM#) = 8770 |
n | 分 | DateDiff(“n”, #2/29/2020 10:00:00 AM#, #2/28/2021 8:00:00 PM#) = 526200 |
s | 秒 | DateDiff(“s”, #2/29/2020 10:00:00 AM#, #2/28/2021 8:00:00 PM#) = 31572000 |
コメント