Excel VBA IsDate関数の使い方と日付に変換する方法

VBA関数

今回はIsDate関数の使い方と日付に変換する方法をご説明します。

IsDate関数は指定した値が日付に変換できるか判定する関数です。

日付を扱う処理や、日付に変換する際に日付として扱えない文字列を操作した場合のエラー回避などに使用します。

日付の指定や操作方法は「IsDate」「DateValue」「DateSerial」「DateAdd」「DateDiff」と色々ありますが、今回はこの「IsDate関数」を使用した方法になります。

その他、日付の指定方法などは下記記事をご覧ください。

1.IsDate関数の使い方

IsDate(値)と記述します。

指定した値が日付に変換可能な場合は「True」を返し、日付に変換できない場合は「False」を返します。

日付に変換可能(Trueを返す)な範囲は西暦の「100/1/1」~「9999/12/31」となります。

ただし、日付に変換するための「CDate関数」と併用する場合に、IsDate関数でFalseを返してもCDate関数では日付に変換出来るケースもありますのでご注意ください。

2.IsDate関数のサンプルコード

「IsDate関数」の使用例とCDate関数を使った変換のサンプルコードです。

Sub Sample1()

Dim Flag    As Boolean
Dim Mydate  As Date

'True
Flag = IsDate("2019/1/1")
Debug.Print Flag

Flag = IsDate("2019年1月1日")
Debug.Print Flag

Flag = IsDate("1:2:3")
Debug.Print (Flag)

Flag = IsDate("19/1/1")
Debug.Print (Flag)

'False
Flag = IsDate("abcde")
Debug.Print Flag

Flag = IsDate("20190101")
Debug.Print Flag

'FalseでもCDateで変換ケース
Flag = IsDate("1")
Debug.Print (Flag)

Mydate = CDate("1")
Debug.Print Mydate

End Sub

3.IsDate関数で判定結果で分岐するサンプルコード

セルに入力されている文字をIsDate関数で判定して、日付の場合のみ取得するサンプルコードです。

A列のデータは全て文字列で入力されています。

Sub Sample2()

Dim i       As Long
Dim MyDate  As String
Dim Flag    As Boolean

For i = 1 To 10

    If IsDate(Cells(i, 1).Value) = True Then
    
        Flag = IsDate(Cells(i, 1))
        MyDate = MyDate & Cells(i, 1) & "は" & Flag & "で、" & CDate(Cells(i, 1)) & "に変換できます。" & vbCrLf
    
    End If

Next i

MsgBox MyDate

End Sub

データの「2019/1/40」と「2019-1-40」、「20190101」がFalseで変換しませんでした。

また、「1月1日」と「1/1」は自動的に「2019」と年が付与されています

タイトルとURLをコピーしました