大体でIT
大体でIT
2020/11/13
Excel VBAで文字列が時間かどうかを判定するには、IsDateが使えます。文字列を時間に変換したいときに、エラー処理として使えるので便利です。エラーで止まってしまうとびっくりしちゃいますので、あらかじめエラー処理をしときましょう。
この記事では、ある文字列や変数が時間であるかを判定する方法について、ご紹介します。
時間かを判定する『IsDate』は、文字列を時間に変換したい場合の、エラー処理として使うと便利です。
では、時間かを判定する『IsDate』についてご説明していきます。
初めに、ポイントとなるVBAコードを記載しておきます。
VBAコードだけ確認したい、という場合にご活用ください。
Dim A
'文字列が時間かを判定する
A = "17:01:02"
If IsDate(A) = True Then MsgBox "時間です"
VBAでIsDateを使って時間かどうかを判定する
ある文字列や変数が、時間かどうかを判定する方法をご紹介します。
時間かどうかを判定するには、『IsDate』を使えばできます。
文字列や変数を、日付型の時間に変換したい場合に、変換できるかを判定したい場合に使えます。
ある文字列や変数が、時間かどうかを判定する『IsDate』への入力の方法です。
時間の場合:TRUE
時間ではない場合:FALSE
では、IsDateを使って、いくつかのパターンで、VBAコードを作ってみます。
まず、日付型の時間を、IsDateで判定してみます。
日付型の時間『#5:01:02 PM#』が、時間かどうかを判定するVBAコードです。
Sub TEST1()
Dim A
A = #5:01:02 PM#
'時間の場合
If IsDate (A) = True Then
MsgBox "時間です"
'時間ではない場合
Else
MsgBox "時間ではありません"
End If
End Sub
日付型の時間を判定
日付型の時間は、もちろん、時間ですので、正しく判定されています。
次に、文字列の時間を、IsDateで判定してみます。
文字列の時間『"17:1:2"』が、時間かどうかを判定するVBAコードです。
Sub TEST2()
Dim A
A = "17:1:2"
'時間の場合
If IsDate (A) = True Then
MsgBox "時間です"
'時間ではない場合
Else
MsgBox "時間ではありません"
End If
End Sub
文字列の時間を判定
文字列であっても、hh:mm:ss形式で入力されていれば、時間に変換することができるので、時間と判定されます。
時間と認識できない例として、時間を数値のみで表した変数を、IsDateで判定してみます。
数値の時間『170102』が、時間かどうかを判定するVBAコードです。
Sub TEST3()
Dim A
A = 170102
'時間の場合
If IsDate (A) = True Then
MsgBox "時間です"
'時間ではない場合
Else
MsgBox "時間ではありません"
End If
End Sub
数値の時間を判定
人の目でみると、170102も時間と認識しようとすればできるけれども、数値は、時間とは認識されません。
IsDateは、単体で使われることはあまりないです。
ある文字列や変数を、時間に変換したい場合に、あらかじめ、時間に変換できるかを判定するために使います。
時間に変換できない値を、TimeValueなどで、変換しようとするとエラーとなっちゃいますので、それを回避するために使うと便利です。
インプットボックスに入力した時間を、日付型の時間に変換する場合を、考えてみます。
まずは、インプットボックスに入力された文字列が、時間に変換できないときで、やってみます。
文字列『"170102"』が時間かを判定して、時間でなければ、メッセージを出すVBAコードです。
Sub TEST4()
Dim A
A = InputBox ("時間を入力してください。例:17:01:02")
'時間の場合
If IsDate (A) = True Then
MsgBox TimeValue(A) '日付型の時間に変換
'時間ではない場合
Else
MsgBox "hh:mm:ss形式で時間を入力してください"
End If
End Sub
インプットボックスに文字列『"170102"』を入力します。
文字列を入力
判定した結果
結果は、『hh:mm:ss形式で時間を入力してください』となりました。
文字列『"170102"』は時間ではありませんので、エラーメッセージを出しています。
続いて、インプットボックスに入力された文字列が、時間に変換できる場合で、やってみます。
文字列『"17:01:02"』が時間かを判定して、時間であれば、日付型の時間に変換するVBAコードです。
Sub TEST5()
Dim A
A = InputBox ("時間を入力してください。例:17:01:02")
'時間の場合
If IsDate (A) = True Then
MsgBox TimeValue(A) '日付型の時間に変換
'時間ではない場合
Else
MsgBox "hh:mm:ss形式で時間を入力してください"
End If
End Sub
インプットボックスに文字列『"17:01:02"』を入力してみます。
文字列を入力
判定した結果
結果は、『17:01:02』と日付型の時間となりました。
文字列『"17:01:02"』は時間と認識できますので、日付型の時間に変換されました。
時間であることを、正しく認識して日付型の時間に変換できています。
この記事では、ある文字列や変数が時間であるかを判定する方法について、ご紹介しました。
時間かの判定は、『IsDate』を使うとできます。
文字列を時間に変換したい場合に、エラー処理として、あらかじめ時間に変換できるかを判定する際に、使うことが多いかと思います。
参考になればと思います。最後までご覧くださいましてありがとうございました。