2018年5月18日金曜日

変数やプロパティの型を知りたい

VarTypeって関数がある。
返り値と定数を比べろってぇモノ。大変不親切である。
まぁ、わりとなんでも融通利かせちゃうVBならこんなもんかと思わなくもない(ぉぃ
でも、ボクは明示的に宣言するのがスキである。あとで大事故にならないように。

そんなわけで、お手軽に調べられるよう、こんなモンをつくって、
標準モジュールに置いておくようにした。


Public Sub VerTypeCheck(ByRef Variable)
  Dim VarType_Number
  Dim Str_Return As String
  Str_Return = ""
  
  VarType_Number = VarType(Variable)
  If VarType_Number > vbArray Then
    Str_Return = "配列:"
    VarType_Number = VarType_Number - vbArray
  End If
  
  Select Case VarType_Number
    Case vbEmpty
      Debug.Print (Str_Return & "Empty:Empty値 (未初期化)")
    Case vbNull
      Debug.Print (Str_Return & "Null:Null値 (無効な値)")
    Case vbInteger
      Debug.Print (Str_Return & "Integer:整数型")
    Case vbLong
      Debug.Print (Str_Return & "Long:長整数型")
    Case vbSingle
      Debug.Print (Str_Return & "Single:単精度浮動小数点数型")
    Case vbDouble
      Debug.Print (Str_Return & "Double:倍精度浮動小数点数型")
    Case vbCurrency
      Debug.Print (Str_Return & "Currency:通貨型")
    Case vbDate
      Debug.Print (Str_Return & "Date:日付型")
    Case vbString
      Debug.Print (Str_Return & "String:文字列型")
    Case vbObject
      Debug.Print (Str_Return & "Object:オートメーション オブジェクト")
    Case vbError
      Debug.Print (Str_Return & "Error:エラー値")
    Case vbBoolean
      Debug.Print (Str_Return & "Boolean:ブール型")
    Case vbVariant
      Debug.Print (Str_Return & "Variant:バリアント型 (バリアント型配列にのみ使用)")
    Case vbDataObject
      Debug.Print (Str_Return & "DataObject:非OLEオートメーションオブジェクト")
    Case vbDecimal
      Debug.Print (Str_Return & "Decimal:10進数型")
    Case vbByte
      Debug.Print (Str_Return & "Byte:バイト型")
    Case vbArray
      Debug.Print (Str_Return & "Array:配列")
    Case Else
      Debug.Print (Str_Return & "???:わかんない:" & VarType(Variable))
  End Select

End Sub


VerTypeCheck 変数やプロパティ
とか、
Call VerTypeCheck(変数やプロパティ)
って呼び出してやると、Debugにナニモノかを吐き出してくれる。
仕様上、”Array:配列”が出力されるコトはないんだけど、一応Caseに含ませてある。
やってることは、まぁMSDNでゆってること丸写しなだけ( ゚-゚)~゚

0 件のコメント:

コメントを投稿