2011年12月11日日曜日

[ExcelVBA] VarType関数


■構文
VarType(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)
vbUserDefinedType36ユーザー定義型を含むバリアント型
vbArray8192配列



■サンプルコード
Option Explicit

Sub SampleCode()
    '■Empty値と判定するケース
    Dim var0 As Variant
    Debug.Print VarType(var0) '0
        
        '注:値を入れたらその値の型に判定されます
        var0 = 123
        Debug.Print VarType(var0) '2
    
    
    '■Null値と判定するケース
    Dim var1 As Variant
    var1 = Switch(False, "test") 'switch関数で真にならずNullを返す
    Debug.Print VarType(var1) '1
    
        '注:vbNullは長整数型の1と同等のため3を返します。
        Debug.Print VarType(vbNull)
    
    
    '■整数型と判定するケース
    Dim var2 As Integer
    Debug.Print VarType(var2) '2
    Debug.Print VarType(-100)  '2
    Debug.Print VarType(32767) '2  32767まで整数型の範囲なので2を返す

    
    '■長整数型と判定するケース
    Dim var3 As Long
    Debug.Print VarType(var3) '3
    Debug.Print VarType(32768) '3  32768以上は長整数型の範囲
    
    
    '■単精度浮動小数点数型と判定するケース
    Dim var4 As Single
    Debug.Print VarType(var4) '4
    
    
    '■倍精度浮動小数点数型と判定するケース
    Dim var5 As Double
    Debug.Print VarType(var5) '5
    Debug.Print VarType(1.1) '5


    '■通貨型と判定するケース
    Dim var6 As Currency
    Debug.Print VarType(var6) '6
    
    
    '■日付型と判定するケース
    Dim var7 As Date
    Debug.Print VarType(var7) '7
    
    
    '■文字列型と判定するケース
    Dim var8 As String
    Debug.Print VarType(var8) '8
        
        '注:改行コードやタブといったものも文字列型と判定されます
        Debug.Print VarType(vbCrLf) '8
        Debug.Print VarType(vbTab) '8
    
    
    '■オブジェクトと判定するケース
    Dim var9 As Object
    Debug.Print VarType(var9) '9
    
    Dim SelfClass As New TestClass '自作のTestClass
    Debug.Print VarType(SelfClass) '9
    
    
    '■ブール型と判定するケース
    Dim var11 As Boolean
    Debug.Print VarType(var11) '11
    Debug.Print VarType(True) '11
    Debug.Print VarType(False) '11
    
    
    '■バリアント型と判定するケース(バリアント型の配列にのみ使用)
    Dim var8204() As Variant
    Debug.Print VarType(var8204)
    
    
    '■10新数方と判定するケース
    Dim var14 As Variant
    var14 = CDec(123)
    Debug.Print VarType(var14)
    
    
    '■バイト型と判定するケース
    Dim var17 As Byte
    Debug.Print VarType(var17) '17
    

    '■配列と判定するケース
    Dim var8200(3) As String
    Debug.Print VarType(var8200) '8200(String:8 + 配列:8192)
End Sub

0 件のコメント: