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配列



■サンプルコード
  1. Option Explicit  
  2.   
  3. Sub SampleCode()  
  4.     '■Empty値と判定するケース  
  5.     Dim var0 As Variant  
  6.     Debug.Print VarType(var0) '0  
  7.           
  8.         '注:値を入れたらその値の型に判定されます  
  9.         var0 = 123  
  10.         Debug.Print VarType(var0) '2  
  11.       
  12.       
  13.     '■Null値と判定するケース  
  14.     Dim var1 As Variant  
  15.     var1 = Switch(False"test"'switch関数で真にならずNullを返す  
  16.     Debug.Print VarType(var1) '1  
  17.       
  18.         '注:vbNullは長整数型の1と同等のため3を返します。  
  19.         Debug.Print VarType(vbNull)  
  20.       
  21.       
  22.     '■整数型と判定するケース  
  23.     Dim var2 As Integer  
  24.     Debug.Print VarType(var2) '2  
  25.     Debug.Print VarType(-100)  '2  
  26.     Debug.Print VarType(32767) '2  32767まで整数型の範囲なので2を返す  
  27.   
  28.       
  29.     '■長整数型と判定するケース  
  30.     Dim var3 As Long  
  31.     Debug.Print VarType(var3) '3  
  32.     Debug.Print VarType(32768) '3  32768以上は長整数型の範囲  
  33.       
  34.       
  35.     '■単精度浮動小数点数型と判定するケース  
  36.     Dim var4 As Single  
  37.     Debug.Print VarType(var4) '4  
  38.       
  39.       
  40.     '■倍精度浮動小数点数型と判定するケース  
  41.     Dim var5 As Double  
  42.     Debug.Print VarType(var5) '5  
  43.     Debug.Print VarType(1.1) '5  
  44.   
  45.   
  46.     '■通貨型と判定するケース  
  47.     Dim var6 As Currency  
  48.     Debug.Print VarType(var6) '6  
  49.       
  50.       
  51.     '■日付型と判定するケース  
  52.     Dim var7 As Date  
  53.     Debug.Print VarType(var7) '7  
  54.       
  55.       
  56.     '■文字列型と判定するケース  
  57.     Dim var8 As String  
  58.     Debug.Print VarType(var8) '8  
  59.           
  60.         '注:改行コードやタブといったものも文字列型と判定されます  
  61.         Debug.Print VarType(vbCrLf) '8  
  62.         Debug.Print VarType(vbTab) '8  
  63.       
  64.       
  65.     '■オブジェクトと判定するケース  
  66.     Dim var9 As Object  
  67.     Debug.Print VarType(var9) '9  
  68.       
  69.     Dim SelfClass As New TestClass '自作のTestClass  
  70.     Debug.Print VarType(SelfClass) '9  
  71.       
  72.       
  73.     '■ブール型と判定するケース  
  74.     Dim var11 As Boolean  
  75.     Debug.Print VarType(var11) '11  
  76.     Debug.Print VarType(True'11  
  77.     Debug.Print VarType(False'11  
  78.       
  79.       
  80.     '■バリアント型と判定するケース(バリアント型の配列にのみ使用)  
  81.     Dim var8204() As Variant  
  82.     Debug.Print VarType(var8204)  
  83.       
  84.       
  85.     '■10新数方と判定するケース  
  86.     Dim var14 As Variant  
  87.     var14 = CDec(123)  
  88.     Debug.Print VarType(var14)  
  89.       
  90.       
  91.     '■バイト型と判定するケース  
  92.     Dim var17 As Byte  
  93.     Debug.Print VarType(var17) '17  
  94.       
  95.   
  96.     '■配列と判定するケース  
  97.     Dim var8200(3) As String  
  98.     Debug.Print VarType(var8200) '8200(String:8 + 配列:8192)  
  99. End Sub  

0 件のコメント: