Sub TEST2()
Dim A
'セルの時、分、秒を時間に変換
A = TimeSerial(Cells(2, 1), Cells(2, 2), Cells(2, 3))
MsgBox A
End Sub
実行してみます。
セルの時、分、秒を時間に変換
結果は、『17:01:02』になりました。
時間に変換できています。
日付型に変換される
変数の型も、日付型となっています。
日付型に変換するとVBAで比較や計算ができる
時間を日付型に変換するとVBAで比較や計算ができるようになります。
ちょっとやってみます。
日付型の時間を比較する
日付型の時間を比較してみます。
時間『17:0:0』と『17:0:1』を比較してみます。
Sub TEST3()
Dim A, B
A = TimeSerial(17, 0, 0) '日付型の時間に変換
B = TimeSerial(17, 0, 1) '日付型の時間に変換'時間を比較
If A < B Then
MsgBox B & " の方が大きいです"
Else
MsgBox A & " の方が大きいです"
End If
End Sub
実行してみます。
日付型の時間を比較
結果は、『17:0:1 の方が大きい』となりました。
正しく時間の比較ができています。
日付型の時間を計算する
日付型の時間を計算してみます。
時間『17:0:0』と『18:2:3』の差分を計算するVBAコードです。
Sub TEST4()
Dim A, B, C, D
A = TimeSerial(17, 0, 0) '日付型の時間に変換
B = TimeSerial(18, 2, 3) '日付型の時間に変換'時間の差分を計算
C = B - A
'日付型の時間に変換
D = CDate(C)
MsgBox D
End Sub
実行してみます。
日付型の時間で差分を計算
結果は、『1:2:3』となりました。
正しく時間の差分を計算できています。
TimeSerialで日付型の時間に変換すると、時間の比較や計算ができます。
時間の比較や計算をしたい場合は、TimeSerialを使って日付型の時間に変換しましょう。
文字列での時間の比較や計算はできない
ちなみに文字列での時間の比較や計算はできません。
文字列で時間の比較と計算をしてみます。
文字列の時間を比較してみる
文字列の時間『"17:0:0"』と『"17:00:01"』の比較をしてみます。
Sub TEST5()
Dim A, B
A = "17:0:0"
B = "17:00:01"
'時間を比較
If A < B Then '←文字列での比較はできない
MsgBox B & " の方が大きいです"
Else
MsgBox A & " の方が大きいです"
End If
End Sub
実行してみます。
文字列の時間を比較
結果は、『17:0:0 の方が大きい』となりました。
実際は、『17:00:01』の方が大きいので、間違いです。
時間を比較するときは、TimeSerialで日付型に変換して比較しましょう。
文字列の時間で計算してみる
文字列の時間で2つの時間の差分を計算してみます。
時間『"17:0:0"』と『"17:0:1"』の差分を計算するVBAコードです。
Sub TEST6()
Dim A, B, C
A = "17:0:0"
B = "17:0:1"
'時間の差分を計算
C = B - A '←文字列での計算はできない(エラー)
End Sub