まりふのひと

Excel-VBA の isDate関数では “23,05,25” は日付型になる

 入力されているデータを日付型に変える Sub(マクロ)を作る時に悩んだこと。



 既に日付型になっている場合は変換対象外にするため、isDate関数を使うと、変換されないケースが多く発生したのだ。
イミディエイト ウィンドウで確認すると‥‥

?isDate("23,05,25")
True
?format("23,05,25","yyyy/mm/dd")
2023/05/25
?format("23,05,25","gee/mm/dd")
H35/05/25

 悩んだ挙句、VarType で判定することにした。

?VarType("23,05,25")
 8 
?VarType(230525)
 3 
?VarType("H23/05/25")
 8 
?VarType(CDate("H23/05/25"))
 7


 Excel ヘルプより

  • 構文
    • VarType(varname)
       引数 varname は必ず指定します。引数 varname には、ユーザー定義型の変数を除く、任意のバリアント型 (Variant) の変数を指定します。
  • 戻り値

定数 内容
vbEmpty 0 Empty 値 (未初期化)
vbNull 1 Null 値 (無効な値)
vbInteger 2 整数型 (Integer)
vbLong 3 長整数型 (Long)
vbSingle 4 単精度浮動小数点数型 (Single)
vbDouble 5 倍精度浮動小数点数型 (Double)
vbCurrency 6 通貨型 (Currency)
vbDate 7 日付型 (Date)
vbString 8 文字列型 (String)
vbObject 9 オブジェクト
vbError 10 エラー値