返り値と定数を比べろってぇモノ。大変不親切である。
まぁ、わりとなんでも融通利かせちゃう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 件のコメント:
コメントを投稿