日付と時刻

VBA 日付と時間の間隔を求める

 日付と時間の間隔、すなわち経過日数や経過時間等を計算する際に使用する関数に「DateAdd関数」と「DateDiff関数」があります。

「DateAdd関数」は特定のシリアル値から「7日後」「4か月後」のような経過後の月日の計算に使われます。

一方「DateDiff関数」は、二つの日付の差分を求める時に使われます。

DateAdd関数

DateAdd(要素の指定, 加算する値, 基準シリアル値)

要素の指定 ➡ 日付なら yyyy(年)・m(月)・d(日)であり、時間なら h(時間)・n(分)・ s(秒)

シリアル値 ➡ 計算のスタートとなる日時(例:2020/02/01 または 2020/10/15   13:30:00)

※ 指定する日付や時刻は文字列(例:”2020/3/10″)の他にリテラル値(例:#3/10/2020#)や数式(例:Now関数)で設定できます。

Sub 経過日時()

‘① 2021/5/10 から5か月後

Range(“B2”) = DateAdd(“m”, 5, “2021/5/10”)

‘②2021/3/4 から85日後

Range(“B3”) = DateAdd(“d”, 85, “2021/3/4”)

‘③ 2021/2/10 7時31分から35時間後

Range(“B4”) = DateAdd(“h”, 35, “2021/2/10 7:31”)

‘④ 2021/2/10 7時31分から750分後

Range(“B5”) = DateAdd(“n”, 750, “2021/2/10 7:31”)

End Sub

DateDiff関数

DateDiff(要素の指定, 日付1, 日付2)

要素の指定 ➡ 日付なら yyyy(年)・m(月)・d(日)であり、時間なら h(時間)・n(分)・ s(秒)

日付 ➡ いつから(日付1)~ いつまで(日付2)

Sub 間隔日時()

Dim startm As Date

Dim endtm As Date

‘①月数

Range(“B2”) = DateDiff(“m”, “2020/3/15”, “2020/6/18”)

‘②日数

Range(“B3”) = DateDiff(“d”, #2/1/2020#, #2/3/2020#)

‘③経過時間

startm = Range(“B5”) ‘開始時刻

endtm = Range(“B6”) ‘終了時刻

Range(“B7”) = DateDiff(“h”, startm, endtm)

‘④何時間

Range(“B9”) = DateDiff(“h”, “2021/10/1”, “2021/10/2”)

‘⑤何分

Range(“B10”) = DateDiff(“n”, “2021/10/1”, “2021/10/2”)

‘⑥何秒

Range(“B11”) = DateDiff(“s”, “2021/10/1”, “2021/10/2”)

‘⑦何日前

Range(“B12”) = DateDiff(“d”, “2021/10/31”, “2021/10/12”)

End Sub

VBA 月末日を求める  月の始まりは毎月1日ですのでなにも問題ありませんが、月末となると月によって異なりますし、2月となれば28日もあれば閏年の29日もあり...