大体でIT
大体でIT
2020/10/27
Excel VBAで文字列が日付かどうかをチェックして判定する方法についてご紹介します。日付かどうかの判定は、IsDateを使うとできます。IsDateを使う場面としては、文字列を日付型に変換するときです。日付と認識できない場合、エラーとなってしますので、エラー処理をするためIsDateが使えます。
この記事では、文字列が日付として認識されるかを判定するIsDateについて、ご紹介します。
IsDateを使う場面としては、文字列を日付型に変換するときです。
日付型ではない場合の処理を、IsDateを使ってあらかじめ組んでおけば、突然エラーがでてきて困るといったことを防げます。
日付かどうかを判定する方法
文字列を日付に変換する際にエラー処理をする方法
初めに、ポイントとなるVBAコードについて記載しておきます。
VBAコードだけ確認したいという場合にご活用ください。
Dim A
A = "2020/10/27"
'日付かどうかを判定する
If IsDate (A) = True Then
VBAでIsDateを使って日付かどうかを判定する
日付かどうかを判定する場面としては、文字列から日付型へ日付を変換する場合です。
日付型へ変更するCDateを使って変換する際に、文字列が日付に変換できないとエラーとなってしまいます。
なので、IsDateを使って日付かどうかを判定する方法が使えます。
では、まず、IsDateの使い方について説明します。
日付と認識できる場合:True
日付と認識できない場合:False
では、IsDateを使って日付かを判定してみます。
まずは、日付型『#1/1/2020#』で日付と認識できるかを判定してみます。
Sub TEST1()
Dim A
A = #1/1/2020# '日付型
'日付と認識できるか判定
If IsDate(A) = True Then
MsgBox "日付です"
Else
MsgBox "日付ではありません"
End If
End Sub
日付型を判定
つづいて、文字列の日付の場合で、日付と認識できるかを判定してみます。
文字列『"2020/1/1"』をIsDateで文字列として認識できるかを判定するVBAコードです。
Sub TEST2()
Dim A
A = "2020/1/1" '日付の文字列
'日付と認識できるか判定
If IsDate(A) = True Then
MsgBox "日付です"
Else
MsgBox "日付ではありません"
End If
End Sub
日付の文字列を判定
文字列でも、日付の形式となっていれば日付として認識することができます。
では、日付と認識できない文字列の場合をやってみます。
文字列『"20200101"』をIsDateを使って、日付として認識できるかを判定するVBAコードです。
Sub TEST3()
Dim A
A = "20200101" '文字列
'日付と認識できるか判定
If IsDate(A) = True Then
MsgBox "日付です"
Else
MsgBox "日付ではありません"
End If
End Sub
文字列を判定(日付と認識できない)
文字列『"20200101"』は日付のようですけど、VBAでは日付としては認識できないということになります。
以上が、IsDateを使って文字列を日付として認識できるかを判定する方法になります。
日付かどうかを判定するIsDateは、文字列を日付型に変換する際のエラー処理として使えます。
日付型へ変換する際に、変換できない文字列を入力してしまうと、エラーとなってしまいます。
このような場面で、あらかじめエラー処理として、IsDateを組み込んでおけば、エラーを回避することができます。
では、具体的にVBAコードを交えてIsDateを使う場面について紹介します。
例えば、InputBoxを使って日付をユーザーに入力してもらうVBAを作る場合を考えます。
次のVBAコードは、ユーザーが入力した日付が日付と認識できない場合に、メッセージを出してエラー処理をします。
Sub TEST4()
Dim A
A = InputBox ("yyyy/mm/dd形式で日付を入力してください")
'日付と認識できるか判定
If IsDate (A) = True Then
'日付型に変換
MsgBox "日付型 " & CDate (A) & " に変換しました"
Else
MsgBox "yyyy/mm/dd形式で日付を入力してください"
End If
End Sub
では、VBAコードを実行してInputBoxに、日付として認識できない値『20200101』を入力してみます。
日付以外の文字列を入力
日付と認識できない場合の処理
結果は、『yyyy/mm/dd形式で入力してください』となります。
このように日付型以外が入力されてしまった場合に、エラーを出さずにメッセージを出せば、ユーザーに適切な日付を入力してもらうことができます。
ちなみに、InputBoxに正しく日付が入力された場合は、日付に変換されます。
先ほどと同じコードで、InputBoxに日付を入力してもらって日付と認識されれば日付に変換するVBAコードとなっています。
Sub TEST5()
Dim A
A = InputBox ("yyyy/mm/dd形式で日付を入力してください")
'日付と認識できるか判定
If IsDate (A) = True Then
'日付型に変換
MsgBox "日付型 " & CDate (A) & " に変換しました"
Else
MsgBox "yyyy/mm/dd形式で日付を入力してください"
End If
End Sub
実行するとInputBoxが表示されますので、日付『2020/1/1』を入力してみます。
日付を入力
日付と認識できる場合の処理
結果は、『日付型 2020/1/1 に変換しました』となりました。
実際は、この後になにかしらの処理がつづくことなります。
このように、文字列を日付型に変換したいときに、エラー処理としてIsDateを使えば、エラーを回避することができます。
この記事では、文字列が日付として認識されるかを判定するIsDateについて、ご紹介しました。
文字列を日付かどうかを判定する場面としては、文字列を日付型に変換する場合です。
日付型ではない場合の処理を、IsDateを使って組んでおけば、突然エラーがでてきて困るといったことを防げます。
日付型への変換を行う場合は、うまくIsDateを使っていきましょう。
参考になればと思います。最後までご覧くださいましてありがとうございました。