関数・メソッド

変数やオブジェクトの型を判別する【戻り値:数値】【VarType関数】【ExcelVBA】

構文

VarType(varname)

varname・・・任意の「変数」・「オブジェクト」・「値」を指定します。
戻り値 ・・・整数型 (Integer)
変数の情報やオブジェクト・変数の種類(データ型)を数値で取得します。

戻り値の一覧

変数型はデータ型一覧にあるような形なのでわかりやすいです。
オブジェクト型になると無数にある為、代表的なものをご紹介します。

定数説明
vbEmpty0Empty 値 (未初期化)
vbNull1Null  (無効な値)
vbInteger2整数型 (Integer)
vbLong3長整数型 (Long)
vbSingle4単精度浮動小数点数型 (Single)
vbDouble5倍精度浮動小数点数型 (Double)
vbCurrency6通貨型 (Currency)
vbDate7日付型 (Date)
vbString8文字列型 (String)
vbObject9オブジェクト
vbError10エラー値
vbBoolean11ブール型 (Boolean)
vbVariant12バリアント型 (Variant)
(バリアント型配列にのみ使用)
vbDataObject13非OLEオートメーション オブジェクト
vbDecimal1410 進数型
vbByte17バイト型 (Byte)
vbLongLong20LongLong 型の整数(64bit環境のみ)
vbUserDefinedType36ユーザー定義型を含むバリアント型
vbArray8192配列

コードサンプル

Public Sub test()
    
    '■通常の変数
    Dim str As String
    Dim num As Long
    
    MsgBox VarType(str) '8 vbString
    MsgBox VarType(num) '3 vbLong
    
    '■オブジェクト変数
    Dim rng As Range
    Dim ws As Worksheet
    
   'TypeName関数と異なり、vbObjectだけで戻ってくる
    MsgBox VarType(rng) '9 vbObject
    MsgBox VarType(ws) '9 vbObject
    
    
    Dim arr1() As Variant
    Dim arr2(5) As Long
    
    '配列+データ型で戻ってくる
    MsgBox VarType(arr1) '8204(8192vbArray+12vbVariant)
    MsgBox VarType(arr2) '8195(8192vbArray+3vbLong)
End Sub

注意点

  • 型情報を文字列で判別する場合は「TypeName関数」を使用します。
  • 配列の場合は「配列」+「データ型」で戻ってきます。単独で 8192 vbArrayは戻りません。
  • オブジェクトは「TypeName関数」と異なり、全て 9 vbObjectで戻ってきます。

使い方例

指定したデータ型が想定しているデータ型と違った場合、エラーが出る場合があります。
不具合発生させないための、エラー回避に使います。

  • マクロ側は整数値を想定しているが、ユーザーが小数点込みでデータ入力した。
  • Range型を選択したいのに、オートシェイプを選択していた。
  • 配列データで指定したはずが、配列になっていなかった。

関連記事

【VBA基本】変数のデータ型一覧
配列の宣言(静的/動的/1次元/2次元)【ExcelVBA】
配列かどうか調べる【IsArray関数】【ExcelVBA】
指定した要素で配列を作成【Array関数】【ExcelVBA】
変数やオブジェクトの型を判別する【戻り値:文字列】【TypeName関数】【ExcelVBA】

コメント

タイトルとURLをコピーしました