Dim A, B
'文字列を時間に変換
A = "17:1:2"
B = TimeValue(A) '17:01:02
B = CDate(A) '17:01:02'シリアル値を時間に変換
A = CDate(1 / 24) '1:00:00'数値8桁を時間に変換
A = 170102
B = CDate(Format(A, "@@:@@:@@")) '17:01:02
では、解説していきます。
VBAでTimeValueを使って文字列を時間に変換
文字列を時間に変換するには、TimeValueを使う方法があります。
時間の比較や計算をしたい場合には、文字列ではなく日付型の時間が必要です。
TimeValueを使えば、文字列の時間を日付型の時間に変換できます。
TimeValueの使い方を、具体的なVBAコードの例を挙げて、解説していきます。
使い方(TimeValue)
まず、文字列を時間に変換するTimeValueへの引数の入力です。
次のように入力します。
『日付型の時間 = TimeValue(文字列の時間)』
では、具体的なVBAコードで解説していきます。
文字列を時間に変換
文字列の時間を、日付型の時間に変換してみます。
文字列『"17:1:2"』を日付型の時間に変換するVBAコードです。
Sub TEST1()
Dim A, B
A = "17:1:2"
B = TimeValue(A) '時間に変換
MsgBox B
End Sub
実行してみます。
文字列を時間に変換
結果は、『17:01:02』となりました。
日付型の時間となる
変数の型は、日付型となっています。
これで、文字列の時間を、日付型の時間に変換することができます。
VBAでCDateを使って文字列を時間に変換
文字列を日付型の時間に変換する方法はもう1つあって、CDateを使う方法です。
CDateを使って、文字列を日付型の時間に変換する方法を解説します。
使い方(CDate)
まず、CDateの使い方です。
次のように入力します。
『日付型の時間 = CDate(文字列の時間)』
では、具体的なVBAコードを例として挙げて、解説します。
文字列を時間に変換
文字列の時間『"17:1:2"』を日付型の時間に変換してみます。
Sub TEST2()
Dim A, B
A = "17:1:2"
B = CDate(A) '時間に変換
MsgBox B
End Sub
実行してみます。
文字列を時間に変換
結果は、『17:01:02』となりました。
日付型の時間となる
変数の型は、日付型となっています。
CDateを使って、文字列を時間に変換できます。
VBAでシリアル値を時間に変換
シリアル値を時間に変換する方法について解説します。
文字列だけでなく、シリアル値を日付型の時間に変換したい、という場合もありますので解説します。
まず、シリアル値とはなにかというと、時間を数値で表したものです。
例えば、
1時間:1÷24=0.04166・・・
1分:1÷24÷60=0.0006944・・・
1秒:1÷24÷60÷60=0.0000115741・・・
というような感じです。
これは、特に覚える必要はありません。こういうものなんだぐらいでいいです。
シリアル値が出てくる場合は、時間の計算をしたときです。
ちょっとやってみます。
時間『17:00:00』と『18:00:00』の差分を計算してみます。
Sub TEST3()
Dim A, B, C
A = CDate("17:0:0") '時間に変換
B = CDate("18:0:0") '時間に変換'時間の差分を計算
C = B - A 'シリアル値になる
MsgBox C
End Sub
Sub TEST8()
Dim A, B
A = CDate("17:0:0") '時間に変換
B = CDate("17:0:1") '時間に変換'時間の比較
If A < B Then
MsgBox B & " の方が大きいです"
Else
MsgBox A & " の方が大きいです"
End If
End Sub