教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について説明していきます。

【ExcelVBA 関数】IsDate関数を使用した日付や時刻として扱えるかどうかを調べる方法を教えて!

        f:id:m_kbou:20200303131905p:plain

IsDate関数を使用して対象データが日付や時刻データとして扱えるか否かを判定する方法について説明します。

 

【目次】

 

構文

記述方法は、以下の通りとなります。

=======================================================================

IsDate(”[変数]

=======================================================================

[説明]:

IsDate関数[変数]に指定したデータが日付又は時刻として扱えるか否かを判断して値を返します。[変数]「”」(ダブルクォーテーション)で囲みます。結果の返り値として、日付や時刻として扱える場合には「True」を返し、扱えない場合には「False」を返します。内容を纏めると、「[変数]で指定したデータが日付又は時刻として扱えるか判断し、True/Falseのいづれかの値を返して下さい。」との意味になります。

[記述例]:

IsDate("令和2年3月3日")
IsDate("10:50")

 

使い方

使い方について、具体的に説明していきます。

日付や時刻として扱えるケース

日付や時刻として扱えるケースについて説明します。

[記述例①]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub サンプル()

    MsgBox IsDate("令和2年3月3日")
   
End Sub

-------------------------------------------------

「”令和2年3月3日”が日付又は時刻として扱えるか否かを判断し、結果(True/False)をMsgBoxで表示して下さい。」との意味になります。

[実行例①]:

※日付に変換が可能なため「True」が表示されます。

f:id:m_kbou:20200303131926p:plain

--------------------------------------------------------------------------------------------------

[記述例②]:

-------------------------------------------------

Sub サンプル()
   
    MsgBox IsDate("10:50")
   
End Sub

-------------------------------------------------

「”10:50”が日付又は時刻として扱えるか否かを判断し、結果(True/False)をMsgBoxで表示して下さい。」との意味になります。

[実行例②]:

※時刻に変換が可能なため「True」が表示されます。

f:id:m_kbou:20200303131926p:plain

--------------------------------------------------------------------------------------------------

[記述例③]:

-------------------------------------------------

Sub サンプル()

    If (IsDate("令和2年3月3日") = True) Then
        MsgBox ”日付です。”
    Else
        MsgBox "日付ではありません。"
    End If
   
End Sub

-------------------------------------------------

「”令和2年3月3日”が日付として扱えるか否かを判断し、扱える場合には”日付です。”をMsgBoxで表示し、扱えない場合には”日付ではありません。”を表示して下さい。」との意味になります。

[実行例③]:

※日付として扱えるため「日付です。」が表示されます。

f:id:m_kbou:20200310085020p:plain

日付や時刻として扱えるケースについての説明は以上です。

 

日付や時刻として扱えないケース

日付や時刻として扱えないケースについて説明します。

[記述例①]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub サンプル()

    MsgBox IsDate(”令和2”)
   
End Sub

-------------------------------------------------

「”令和2”が日付又は時刻として扱えるか否かを判断し、結果(True/False)をMsgBoxで表示して下さい。」との意味になります。

[実行例①]:

※日付又は時刻に変換が不可能なため「False」が表示されます。

f:id:m_kbou:20200303131948p:plain

--------------------------------------------------------------------------------------------------

[記述例②]:

-------------------------------------------------

Sub サンプル()

    MsgBox IsDate(”午後五時十時五十分”)
   
End Sub

-------------------------------------------------

「”午後五時十時五十分”が日付又は時刻として扱えるか否かを判断し、結果(True/False)をMsgBoxで表示して下さい。」との意味になります。

[実行例②]:

※日付又は時刻に変換が不可能なため「False」が表示されます。

f:id:m_kbou:20200303131948p:plain

--------------------------------------------------------------------------------------------------

[記述例③]:

-------------------------------------------------

Sub サンプル()

    If (IsDate("令和2") = True) Then
        MsgBox ”日付です。”
    Else
        MsgBox "日付ではありません。"
    End If
   
End Sub

-------------------------------------------------

「”令和2”が日付として扱えるか否かを判断し、扱える場合には”日付です。”をMsgBoxで表示し、扱えない場合には”日付ではありません。”を表示して下さい。」との意味になります。

[実行例③]:

※日付として扱えないため「日付ではありません。」が表示されます。

f:id:m_kbou:20200310090142p:plain

日付や時刻として扱えないケースについての説明は以上です。

 

おわりに

今回はIsDate関数を使用した日付や時刻として扱えるかどうかを調べる方法について説明しました。類似の内容としてIsNumeric関数を使用した数値として扱えるかどうかを調べる方法IsArray関数を使用した配列かどうかを調べる方法があります。こちらも参考にして下さい。