2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ExcelVBA】データ型を調べる

Posted at

はじめに

随分前にVBAでデータ型を判定する関数がないかと思って調べてみると、VarType 関数という関数があることが分かりました。
ただ、JavascriptにおけるNumber.isInteger()のようにデータ型をbooleanで返す処理ではなかったため、備忘録として記事をまとめてみることにしました。

VarType関数の概要

  • VarType(varname)で、変数varnameのデータ型を調べることができますが...
  • 「変数のサブタイプ、またはオブジェクトの既定のプロパティの型を示す整数型 (Integer) の値を返します」という説明の通り、データ型が整数として返されるのがポイントです。
定数 説明
vbEmpty 0 空 (未初期化)
vbNull 1 Null (有効なデータではない)
vbInteger 2 Integer
vbLong 3 長整数
vbSingle 4 単精度浮動小数点数
vbDouble 5 倍精度浮動小数点数
vbCurrency 6 通貨値
vbDate 7 日付値
vbString 8 String
vbObject 9 Object
vbError 10 エラー値
vbBoolean 11 ブール値
vbVariant 12 バリアント型 ( Variant ) (バリアントの 配列でのみ使用される)
vbDataObject 13 データ アクセス オブジェクト
vbDecimal 14 10 進値
vbByte 17 バイト値
vbLongLong 20 LongLong 整数 (64 ビット プラットフォームでのみ有効)
vbUserDefinedType 36 ユーザー定義型を含むバリアント
vbArray 8192 配列 (この関数によって返されたときに常に別の定数に追加されます)
  • 例えば以下のような形でVarType関数を使うと、上記の表のルールで整数が返されるので、結果だけを見ても何のデータ型なのかパッと理解しづらいと思います。
VarType関数の利用例
Sub test()
    myVal = 3
    Debug.Print VarType(myVal)
End Sub
実行結果
2

少し別のアプローチをしてみる

  • 単にデータ型名を調べるだけなら、データ型名が返されるTypeName関数を使った方が分かりやすいと思います。
TypeName関数の例
Private Sub test2()
    myVal = 3
    Debug.Print TypeName(myVal)
End Sub
実行結果
Integer
  • データ型に応じて処理を分岐させるのであれば、以下のようにデータ型を判定してtrue/falseで返す関数を作った方が良いかもしれません。
  • Nullの判定は組み込みのisNull関数、エラー値も同様に組み込みのisError関数が使えるので、一部のデータ型の判定については自作する必要がありません。
データ型を判定する関数の例
Function IsInteger(var As Variant) As Boolean
    IsInteger = (VarType(var) = vbInteger)
End Function

Function IsLong(var As Variant) As Boolean
    IsLong = (VarType(var) = vbLong)
End Function

Function IsString(var As Variant) As Boolean
    IsString = (VarType(var) = vbString)
End Function

まとめ

  • IsIntegerIsString程度の関数は組み込みで用意してあるのが普通だと思っていたので、少々意外な結果でした。
  • こういうちょっとした機能が足りていないのが、多くの人がVBAを微妙だと感じる原因なのかもしれません...

参考URL

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?