![見出し画像](https://assets.st-note.com/production/uploads/images/142431444/rectangle_large_type_2_ed859dc05a676d2055a891bdbc2b5d88.png?width=800)
【Day43】文系オタクのエンジニア道~関数④~データの種類を判定する
こんにちは
安田です
焼き肉では白米を大盛りで食べ
シメにクッパを食べるお米大好き人間です
今日も数は少なめですが、インプットに努めていきます
IsNumeric関数
引数に指定した値が数値のとき→True
引数に指定した値が数値以外のとき→False
それぞれを返します
Sub test1()
MsgBox IsNumeric(100)
End Sub
![](https://assets.st-note.com/img/1717118273910-djW1Eq3hJ0.png)
Sub test1()
MsgBox IsNumeric("ジョジョの奇妙な冒険")
End Sub
![](https://assets.st-note.com/img/1717118325536-SRPo3CyyCe.png)
Sub test1()
MsgBox IsNumeric("100")
End Sub
![](https://assets.st-note.com/img/1717118273910-djW1Eq3hJ0.png)
理由
”100” ダブルコーテーションで囲っているので、文字列になります
文字列の"100"は数値の100に変換することが可能です
VBA内部で自動的に数値に変換しているからです
文字列型を自動的に数値型へ変換してくれる仕組みを
自動型変換、自動型キャストと呼びます
VBAの特徴でした
IsDate関数
引数に指定した値が日付の場合→True
引数に指定した値が日付以外の場合→False
こちらは共にFalseとなります
Sub test1()
MsgBox IsDate("100")
MsgBox IsDate("ジョジョの奇妙な冒険")
End Sub
次のコードはFalseが返ってくると思いきや
Sub test1()
MsgBox IsDate("2024/5/31")
End Sub
![](https://assets.st-note.com/img/1717119115094-qLxuxTpNUO.png)
IsDate("2024/5/31")も実際には
「"2024/5/31"」という文字列型となります
こちらもVBA内部で日付型に自動型変換しています
本来であれば"#" シャープで囲む必要があります
(#5/31/2024#)
しかし、一般的に("2024/5/31")と記述することが多いため
VBAの自動型変換が働いています
下記の表記の仕方は、日付型に自動で変換されます
IsDate(”2024/5/31”)
IsDate("2024-5-31")
IsDate("2024年5月31日")
IsDate("令和6年5月31日")
IsDate("5/31")
IsDate("2024/5")
まとめ
VBAって頭いいなーという素人感想となりますが
使いやすいように考えてくれているんだなと
自動型変換があるということを認識していきます
「VBAマスターに俺はなる」
最後まで読んでいただき
ありがとうございます
安田
マガジンにまとめてありますので
よかったらそちらも御覧ください
この記事が気に入ったらサポートをしてみませんか?