大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで文字列が時間かどうかを判定するには、IsDateが使えます。文字列を時間に変換したいときに、エラー処理として使えるので便利です。エラーで止まってしまうとびっくりしちゃいますので、あらかじめエラー処理をしときましょう。

はじめに

この記事では、ある文字列や変数が時間であるかを判定する方法について、ご紹介します。

時間かの判定は、『IsDate』を使います。

時間かを判定する『IsDate』は、文字列を時間に変換したい場合の、エラー処理として使うと便利です。

では、時間かを判定する『IsDate』についてご説明していきます。

この記事で紹介すること

  • 文字列が時間であるかを判定する方法

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、ポイントとなるVBAコードを記載しておきます。

VBAコードだけ確認したい、という場合にご活用ください。

'文字列が時間かを判定する
a = "17:01:02"
If IsDate(a) = True Then

では、解説していきます。

VBAでIsDateを使って時間かどうかを判定する

ある文字列や変数が、時間かどうかを判定する方法をご紹介します。

時間かどうかを判定するには、『IsDate』を使えばできます。

文字列や変数を、日付型の時間に変換したい場合に、変換できるかを判定したい場合に使えます。

使い方

ある文字列や変数が、時間かどうかを判定する『IsDate』への入力の方法です。

『判定 = IsDate(文字列)』

判定には、次の値が返ってきます。

  • 時間の場合:TRUE
  • 時間ではない場合:FALSE

では、IsDateを使って、いくつかのパターンで、VBAコードを作ってみます。

日付型で判定してみる

まず、日付型の時間を、IsDateで判定してみます。

日付型の時間『#5:01:02 PM#』が、時間かどうかを判定するVBAコードです。

Sub TEST1()
    
    a = #5:01:02 PM#
    
    '時間の場合
    If IsDate(a) = True Then
        MsgBox "時間です"
    '時間ではない場合
    Else
        MsgBox "時間ではありません"
    End If
    
End Sub

実行してみます。

日付型の時間を判定

日付型の時間を、IsDateで時間かどうかを判定した結果

結果は、『時間です』となりました。

日付型の時間は、もちろん、時間ですので、正しく判定されています。

文字列で判定してみる

次に、文字列の時間を、IsDateで判定してみます。

文字列の時間『"17:1:2"』が、時間かどうかを判定するVBAコードです。

Sub TEST2()
    
    a = "17:1:2"
    
    '時間の場合
    If IsDate(a) = True Then
        MsgBox "時間です"
    '時間ではない場合
    Else
        MsgBox "時間ではありません"
    End If
    
End Sub

実行してみます。

文字列の時間を判定

文字列の時間を、IsDateで時間かどうかを判定した結果

結果は、『時間です』となりました。

文字列であっても、hh:mm:ss形式で入力されていれば、時間に変換することができるので、時間と判定されます。

時間と認識できない例

時間と認識できない例として、時間を数値のみで表した変数を、IsDateで判定してみます。

数値の時間『170102』が、時間かどうかを判定するVBAコードです。

Sub TEST3()
    
    a = 170102
    
    '時間の場合
    If IsDate(a) = True Then
        MsgBox "時間です"
    '時間ではない場合
    Else
        MsgBox "時間ではありません"
    End If
    
End Sub

実行してみます。

数値の時間を判定

数値の時間を、IsDateで時間かどうかを判定した結果

結果は、『時間ではありません』となりました。

人の目でみると、170102も時間と認識しようとすればできるけれども、数値は、時間とは認識されません。

VBAでエラー処理としてIsDateを使う例

IsDateは、単体で使われることはあまりないです。

ある文字列や変数を、時間に変換したい場合に、あらかじめ、時間に変換できるかを判定するために使います。

時間に変換できない値を、TimeValueなどで、変換しようとするとエラーとなっちゃいますので、それを回避するために使うと便利です。

では、具体的な例を挙げて、解説していきます。

文字列を日付型の時間に変換(変換できないとき)

インプットボックスに入力した時間を、日付型の時間に変換する場合を、考えてみます。

まずは、インプットボックスに入力された文字列が、時間に変換できないときで、やってみます。

文字列『"170102"』が時間かを判定して、時間でなければ、メッセージを出すVBAコードです。

Sub TEST4()
    
    a = InputBox("時間を入力してください。例:17:1:2")
    
    '時間の場合
    If IsDate(a) = True Then
        b = TimeValue(a) '日付型の時間に変換
        MsgBox b
    '時間ではない場合
    Else
        MsgBox "hh:mm:ss形式で時間を入力してください"
    End If
    
End Sub

インプットボックスに文字列『"170102"』を入力します。

文字列を入力

文字列を入力する

実行してみます。

判定した結果

文字列が時間かを判定して時間でない場合、メッセージを出す

結果は、『hh:mm:ss形式で時間を入力してください』となりました。

文字列『"170102"』は時間ではありませんので、エラーメッセージを出しています。

時間ではないことを、正しく判定できています。

文字列を日付型の時間に変換(変換できるとき)

続いて、インプットボックスに入力された文字列が、時間に変換できる場合で、やってみます。

文字列『"17:01:02"』が時間かを判定して、時間であれば、日付型の時間に変換するVBAコードです。

先ほどと同じVBAコードです。

Sub TEST5()
    
    a = InputBox("時間を入力してください。例:17:1:2")
    
    '時間の場合
    If IsDate(a) = True Then
        b = TimeValue(a) '日付型の時間に変換
        MsgBox b
    '時間ではない場合
    Else
        MsgBox "hh:mm:ss形式で時間を入力してください"
    End If
    
End Sub

インプットボックスに文字列『"17:01:02"』を入力してみます。

文字列を入力

文字列を入力する

では、OKをクリックします。

判定した結果

文字列が時間かを判定して時間の場合は、日付型の時間に変換した結果

結果は、『17:01:02』と日付型の時間となりました。

文字列『"17:01:02"』は時間と認識できますので、日付型の時間に変換されました。

時間であることを、正しく認識して日付型の時間に変換できています。

おわりに

この記事では、ある文字列や変数が時間であるかを判定する方法について、ご紹介しました。

時間かの判定は、『IsDate』を使うとできます。

文字列を時間に変換したい場合に、エラー処理として、あらかじめ時間に変換できるかを判定する際に、使うことが多いかと思います。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す