見出し画像

【Day43】文系オタクのエンジニア道~関数④~データの種類を判定する

こんにちは
安田です

焼き肉では白米を大盛りで食べ
シメにクッパを食べるお米大好き人間です

今日も数は少なめですが、インプットに努めていきます


IsNumeric関数

引数に指定した値が数値のとき→True
引数に指定した値が数値以外のとき→False
それぞれを返します

Sub test1()
    MsgBox IsNumeric(100)
End Sub
100は数値なのでTrueが表示されます

Sub test1()
    MsgBox IsNumeric("ジョジョの奇妙な冒険")
End Sub
文字列はFalseが表示されます

Sub test1()
    MsgBox IsNumeric("100")
End Sub
文字列として指定したのにTrueが返ってきました

理由
”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
""文字列になっているもののTrueが返ってきました

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")

https://amzn.to/3V6JWOE 参照

まとめ

VBAって頭いいなーという素人感想となりますが
使いやすいように考えてくれているんだなと

自動型変換があるということを認識していきます


参考文献

VBAマスターに俺はなる

最後まで読んでいただき
ありがとうございます
安田

マガジンにまとめてありますので
よかったらそちらも御覧ください


この記事が気に入ったらサポートをしてみませんか?