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