これはデートですか? という意味深な質問を投げかけるIsDate関数のご紹介です。真、偽を返すので条件分岐に使いやすく、フラグを容易に立てることができます。
IsDate関数の使い方
引数が日付かを判定
IsDate(引数)
IsDate(引数)
![isdate1](https://sunagitsune.com/wp-content/uploads/2020/04/isdate1.jpg)
とりあえず漢数字で日付を書きました。このA1セルを日付判断ボックスとします。
![isdate2](https://sunagitsune.com/wp-content/uploads/2020/04/isdate2.jpg)
VBAを開き、マクロを書いていきます。
まずIf文でIsDate(Range(“A1”).Value)を判定します。日付ならTrueが返り、そうでないならFalseが返るので、これ以上の記述は不要です。
まずIf文でIsDate(Range(“A1”).Value)を判定します。日付ならTrueが返り、そうでないならFalseが返るので、これ以上の記述は不要です。
![isdate3](https://sunagitsune.com/wp-content/uploads/2020/04/isdate3.jpg)
日付であればそうである旨、
![isdate4](https://sunagitsune.com/wp-content/uploads/2020/04/isdate4.jpg)
ちがうならちがう旨、メッセージボックスで表示します。
![isdate5](https://sunagitsune.com/wp-content/uploads/2020/04/isdate5.jpg)
実行結果。一月二日と普通に書いたものは文字列とされ、日付認定されませんでした。
![isdate6](https://sunagitsune.com/wp-content/uploads/2020/04/isdate6.jpg)
Excelが日付認定するデータは、たとえばこういう感じのものです。
![isdate7](https://sunagitsune.com/wp-content/uploads/2020/04/isdate7.jpg)
自動で書式が日付になり、表記が変更されました。これは当然パスします。
![isdate8](https://sunagitsune.com/wp-content/uploads/2020/04/isdate8.jpg)
書式を変更しシリアル値にすると、これは数値として扱われます。パスしません。
![isdate9](https://sunagitsune.com/wp-content/uploads/2020/04/isdate9.jpg)
なお、存在しない日付でもそれっぽければパスします。「今月何日までだっけ?」的な使い方はできません。
![isdate10](https://sunagitsune.com/wp-content/uploads/2020/04/isdate10-650x503.jpg)
逆に明らかに日付でないものを書式だけ日付にしても……。
![isdate11](https://sunagitsune.com/wp-content/uploads/2020/04/isdate11.jpg)
これはパスしません。
' vba
If IsDate(Range("A1").Value) Then
MsgBox "日付です"
Else
MsgBox "日付ではないです"
End If
Next
IsDate関数の使い方については以上です。同様に数値を判定する場合はIsNumeric関数、空白かどうかはIsEmpty関数の記事をご参照ください。
文字列を判定したい、あるいはTrue/Falseではなくデータ型の名称を取得したい・条件に使いたい場合は、TypeName関数を使います。
![](https://sunagitsune.com/wp-content/uploads/2018/10/gui-2311261_1280.png)
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
![](https://sunagitsune.com/wp-content/uploads/2018/12/mathematics-1509559_1280-160x90.jpg)
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント