2012年5月13日日曜日

[VBScript] 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

Dim temp
'■Empty値と判定するケース
Wscript.Echo VarType(temp) '0 宣言した直後はEmptyと判定されます。


'■Null値と判定するケース
temp = Null
Wscript.Echo VarType(temp) '1 Nullが代入されているとNullと判定されます


'■整数,長整数,バイト型と判定するケース
temp = 32767
Wscript.Echo VarType(temp) '2  32767まで整数型なので2を返す
temp = 32768
Wscript.Echo VarType(temp) '3  32768からは長整数型ので3を返す
temp = 1
Wscript.Echo VarType(temp) '2  256の範囲だからと言ってByte型にはなりません
temp = CByte(temp)
Wscript.Echo VarType(temp) '17 明示的に型変換するとByte型と判定します


'■単精度・倍精度浮動小数点数型と判定するケース
temp = 1.1
Wscript.Echo VarType(temp) '5 小数点数は倍精度浮動小数点数型と判定します。
temp = CSng(temp)
Wscript.Echo VarType(temp) '4 明示的に型変換すると単精度浮動小数点型と判定します


'■日付型と判定するケース
temp = Dateserial(2000, 1, 1)
Wscript.Echo VarType(temp) '7 日付、時間関係の値が入っていると日付型と判定します


'■文字列型と判定するケース
temp = "a"
Wscript.Echo VarType(temp) '8 ダブルクォーテーションで囲んだ文字・文字列は文字列型と判定します
'改行コードやタブといったものも文字列型と判定されます
temp = vbCrLf
Wscript.Echo VarType(temp) '8
temp = vbTab
Wscript.Echo VarType(temp) '8

'■オブジェクトと判定するケース
Set temp = CreateObject("Scripting.Dictionary")
Wscript.Echo VarType(temp) '9

Set temp = Nothing
Wscript.Echo VarType(temp) '9 Nothingを代入してもオブジェクトと判定する


'■Bool値と判定するケース
temp = (1 < 5)
Wscript.Echo VarType(temp) '11 条件式の結果はBool値となります


'■バリアント型と判定するケース(バリアント型の配列にのみ使用)
Dim temp2()
Wscript.Echo VarType(temp2) '8204 = 12:バリアント型 + 8192:配列
Redim temp2(1)
Wscript.Echo VarType(temp2) '8204 = 12:バリアント型 + 8192:配列
temp2(0) = 123
Wscript.Echo VarType(temp2) '8204 = 12:バリアント型 + 8192:配列
temp2(0) = "abc"
Wscript.Echo VarType(temp2) '8204 = 12:バリアント型 + 8192:配列
'型を宣言しないので、配列はすべてバリアント型の配列となる

0 件のコメント: