ray88’s diary

お仕事で困ったとき用の自分用の覚書

VBA DateDiff関数 指定した2つの日付・時刻の間隔を返す

【書式】

DateDiff(時間単位,日付1,日付2)
引数 説明
時間単位 戻り値の時間単位
日付1 間隔を計算する1つ目の日付を指定する
日付2 間隔を計算する2つ目の日付を指定する

※時間単位に指定する設定値は次の通り

設置値 説明
yyyy
m
y 年間通算日
d
w 週日
ww
h
n
s

■時間の計算の例

Sub testCalcTime()

'日時格納用変数1(文字型)
Dim strTime1 As String
'日時格納用変数2(文字型)
Dim strTime2 As String
'日時格納用変数1(日付型)
Dim dayTime1 As Date
'日時格納用変数2(日付型)
Dim dayTime2 As Date

'計算結果格納用変数
Dim lngResultTime As Long
'計算結果(時間)格納用変数
Dim lngResultHour As Long
'計算結果(分)格納用変数
Dim lngResultMinutes As Long

'比較対象時間を変数に格納
strTime1 = "13:15"
strTime2 = "15:00"

'変数に格納した時間を文字型→日付型へ変換
dayTime1 = CDate(strTime1)
dayTime2 = CDate(strTime2)

'二つの時間の差分を計算(分)
lngResultTime = DateDiff("n", dayTime1, dayTime2)

'計算結果(分)を時間と分に分ける
lngResultHour = Int(lngResultTime / 60)
lngResultMinutes = lngResultTime - lngResultHour * 60

'計算結果を(m:d)形式で表示
MsgBox lngResultHour & ":" & lngResultMinutes

End Sub

■日にちの計算

Sub testCalcDate()
    MsgBox DateDiff("yyyy", #1/1/2009#, #1/1/2010#)
    MsgBox DateDiff("m", #1/1/2009#, #1/1/2010#)
    MsgBox DateDiff("d", #1/1/2009#, #1/1/2010#)
End Sub