Dim A, B, C, D
'比較
A = CDate("17:0:0") '日付に変換
B = CDate("17:00:01") '日付に変換
If A < B Then '⇒bが大きい'差分を計算
A = "17:0:0"
B = "18:0:0"
C = DateDiff("h", A, B) '1(時間)
C = DateDiff("n", A, B) '60(分)
C = DateDiff("s", A, B) '3600(秒)'差分を時間で表示
A = CDate("17:0:0")
B = CDate("18:0:0")
C = TimeValue(CDate(B - A)) '1:00:00'差分を時間で表記(日付をまたぐ)
A = CDate("2020/1/1 23:0:0")
B = CDate("2020/1/3 1:0:0")
C = Int(B - A) '1(日)
D = TimeValue(CDate(B - A)) '2:00:00
では、解説していきます。
VBAで時間を比較する
時間を比較する方法をご紹介します。
時間を比較する場合は、文字列ではできません。
日付型の時間に変換して、比較演算子で比較します。
文字列で比較はできない
ためしに、文字列で時間を比較してみます。
時間『"17:0:0"』と『"17:00:01"』を比較してみます。
Sub TEST1()
Dim A, B
A = "17:0:0"
B = "17:00:01"
'比較する
If A < B Then '←比較できない
MsgBox B & "の方が大きい"
Else
MsgBox A & "の方が大きい"
End If
End Sub
Sub TEST2()
Dim A, B
A = CDate("17:0:0") '日付型に変換
B = CDate("17:00:01") '日付型に変換'比較する
If A < B Then
MsgBox B & "の方が大きい"
Else
MsgBox A & "の方が大きい"
End If
End Sub
Sub TEST6()
Dim A, B, C, D
A = CDate("17:0:0") '日付型に変換
B = CDate("18:0:0") '日付型に変換'差分を計算
C = B - A '⇒4.16666666666666E-02'日付型に変換
D = CDate(C) '⇒1:00:00
MsgBox D
End Sub
Sub TEST7()
Dim A, B, C, D, E, F
A = CDate("2020/1/1 23:0:0") '日付型に変換
B = CDate("2020/1/3 1:0:0") '日付型に変換'差分を計算
C = B - A '⇒1.08333333332848'整数の部分を取得(日数)
D = Int(C) '⇒1'差分を日付型に変換
E = CDate(C) '⇒1899/12/31 2:00:00'時間のみを取得
F = TimeValue(E) '⇒2:00:00
MsgBox D & "日と " & F & " の差です"
End Sub