教えて!ExcelVBA!

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

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

f:id:m_kbou:20200420124624p:plain

 

 

構文

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

IsDate([変数])

[説明]:

指定した変数が日付や時刻データとして扱えるか否かを判定します。日付や時刻として扱える場合には「True」を、扱えない場合には「False」を戻り値として返します。

[変数] 任意の変数を記述します。

[記述例]:

Sub サンプル()
  Dim 値 As Variant
  値 = "令和2年3月3日"
  MsgBox IsDate(値)
End Sub

 

使い方

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

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

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

[プログラミング例①]:

Sub サンプル()

  Dim 値 As Variant

  値 = "令和2年3月3日"

  MsgBox IsDate(値)

End Sub

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

f:id:m_kbou:20211217082009p:plain

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

[実行例①]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423122743p:plain

②結果は以下の様に表示されます。日付に変換が可能なため、MsgBoxで「True」が表示されます。

f:id:m_kbou:20210423122756p:plain

[サンプル①]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

[プログラミング例②]:

Sub サンプル()

  Dim 値 As Variant

  値 = "10:50"

  MsgBox IsDate(値)

End Sub

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

f:id:m_kbou:20211217082037p:plain

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

[実行例②]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423122932p:plain

②結果は以下の様に表示されます。時刻に変換が可能なため、MsgBoxで「True」が表示されます。

f:id:m_kbou:20210423122946p:plain

[サンプル②]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

[プログラミング例③]:

Sub サンプル()

  Dim 値 As Variant

  値 = "令和2年3月3日"

  If (IsDate(値) = True) Then
    MsgBox "日付です。"
  Else
    MsgBox "日付ではありません。"
  End If

End Sub

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

f:id:m_kbou:20211217082100p:plain

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

[実行例③]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423123108p:plain

②結果は以下の様に表示されます。日付として扱えるため、MsgBoxで「日付です。」が表示されます。

f:id:m_kbou:20210423123120p:plain

[サンプル③]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

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

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

[プログラミング例①]:

Sub サンプル()

  Dim 値 As Variant

  値 = "令和2"

  MsgBox IsDate(値)

End Sub

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

f:id:m_kbou:20211217082122p:plain

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

[実行例①]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423123258p:plain

②結果は以下の様に表示されます。日付又は時刻に変換が不可能なため、MsgBoxで「False」が表示されます。

f:id:m_kbou:20210423123311p:plain

[サンプル①]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

[プログラミング例②]:

Sub サンプル()

  Dim 値 As Variant

  値 = "午後五時十時五十分"

  MsgBox IsDate(値)

End Sub

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

f:id:m_kbou:20211217082142p:plain

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

[実行例②]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423123449p:plain

②結果は以下の様に表示されます。日付又は時刻に変換が不可能なため、MsgBoxで「False」が表示されます。

f:id:m_kbou:20210423123501p:plain

[サンプル②]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

[プログラミング例③]:

Sub サンプル()

  Dim 値 As Variant

  値 = "令和2"

  If (IsDate(値) = True) Then
    MsgBox "日付です。"
  Else
    MsgBox "日付ではありません。"
  End If

End Sub

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

f:id:m_kbou:20211217082203p:plain

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

[実行例③]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423123612p:plain

②結果は以下の様に表示されます。日付又は時刻に変換が不可能なため、、MsgBoxで「日付ではありません。」が表示されます。

f:id:m_kbou:20210423123625p:plain

[サンプル③]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

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