教えて!ExcelVBA!

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

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

f:id:m_kbou:20200420124624p:plain

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

 

 

構文

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

IsDate(”[変数]”)

[説明]:

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

[記述例]:

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

 

使い方

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

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

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

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

Sub サンプル()
  MsgBox IsDate("令和2年3月3日")
End Sub

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

f:id:m_kbou:20210423122729p:plain

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

[実行例①]:

①<実行>ボタンには上記のプログラミング例①のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423122743p:plain

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

f:id:m_kbou:20210423122756p:plain

[サンプル①]:

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

drive.google.com

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

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

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

f:id:m_kbou:20210423122918p:plain

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

[実行例②]:

①<実行>ボタンには上記のプログラミング例②のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423122932p:plain

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

f:id:m_kbou:20210423122946p:plain

[サンプル②]:

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

drive.google.com

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

Sub サンプル()

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

End Sub

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

f:id:m_kbou:20210423123055p:plain

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

[実行例③]:

①<実行>ボタンには上記のプログラミング例③のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423123108p:plain

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

f:id:m_kbou:20210423123120p:plain

[サンプル③]:

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

drive.google.com

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

 

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

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

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

Sub サンプル()
  MsgBox IsDate(”令和2”)
End Sub

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

f:id:m_kbou:20210423123244p:plain

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

[実行例①]:

①<実行>ボタンには上記のプログラミング例①のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423123258p:plain

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

f:id:m_kbou:20210423123311p:plain

[サンプル①]:

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

 

drive.google.com

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

Sub サンプル()
  MsgBox IsDate(”午後五時十時五十分”)
End Sub

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

f:id:m_kbou:20210423123436p:plain

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

[実行例②]:

①<実行>ボタンには上記のプログラミング例②のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210423123449p:plain

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

f:id:m_kbou:20210423123501p:plain

[サンプル②]:

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

drive.google.com

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

Sub サンプル()

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

End Sub

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

f:id:m_kbou:20210423123558p: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関数を使用した配列かどうかを調べる方法があります。こちらも参考にして下さい。