Get variable type in VBScript

How to get the type of a variable using VBScript?

+48
vbscript asp-classic
Jul 19 '10 at 13:19
source share
6 answers

Is VarType what you need?

Gets a value indicating the subtype of the variable.

+--------------+-------+---------------------------------------------+ | Constant | Value | Description | +--------------+-------+---------------------------------------------+ | vbEmpty | 0 | Empty (uninitialized) | | vbNull | 1 | Null (no valid data) | | vbInteger | 2 | Integer | | vbLong | 3 | Long integer | | vbSingle | 4 | Single-precision floating-point number | | vbDouble | 5 | Double-precision floating-point number | | vbCurrency | 6 | Currency | | vbDate | 7 | Date | | vbString | 8 | String | | vbObject | 9 | Automation object | | vbError | 10 | Error | | vbBoolean | 11 | Boolean | | vbVariant | 12 | Variant (used only with arrays of Variants) | | vbDataObject | 13 | A data-access object | | vbDecimal | 14 | Decimal Value | | vbByte | 17 | Byte | | vbLongLong | 20 | LongLong integer (64 bit) | | vbArray | 8192 | Array | +--------------+-------+---------------------------------------------+ 

The VarType function never returns a value for an array on its own. This is always added to some other value to indicate the array is a special type. The value for Variant is returned only when it has been added to the value for the array to indicate that the argument to the VarType Function is an array. For example, the value returned for an array of integers is calculated as 2 + 8192 or 8194. If an object has a default property, VarType (object) returns the type of its default property.

+66
Jul 19 '10 at 13:24
source share

If you want to get the type name of the object assigned to the variable using Set , you can use TypeName instead.

 Class SomeClass '' empty class End Class Dim x Set x = New SomeClass WScript.Echo TypeName(x) '' displays "SomeClass" 
+25
Jul 19 '10 at 10:10
source share

Tmdean's answer also works to get the type name (not an integer) of (almost) all other types of variables (for http://msdn.microsoft.com/en-us/library/ie/y58s1cs6%28v=vs.84%29 .aspx )

 dim i,s,a i = 1 s = "Hello world" a = split("Hello World"," ") WScript.Echo TypeName(i) 'Displays "Integer" WScript.Echo TypeName(s) 'Displays "String" WScript.Echo TypeName(a) 'Displays "Variant()" 
+7
Feb 17 '12 at 16:50
source share
 Dim a, b, c, d, e, f a = 10 b = "text" c = Split("John Doe,Jane Smith,Dick Tracy", ",") d = 1.2 e = Null f = True MsgBox "'a' is " & fVarType(a) & vbNewLine & _ "'b' is " & fVarType(b) & vbNewLine & _ "'c' is " & fVarType(c) & vbNewLine & _ "'d' is " & fVarType(d) & vbNewLine & _ "'e' is " & fVarType(e) & vbNewLine & _ "'f' is " & fVarType(f) & vbNewLine & _ "'g' is " & fVarType(c(0)) Function fVarType(x) Const ArrayCode = 8192 Dim y y = VarType(x) If y < ArrayCode Then fVarType = fGetType(VarType(x)) Else fVarType = "vbArray with " & fGetType(VarType(x)- ArrayCode) & " elements" End If End Function Function fGetType(vType) Select Case vType Case 0 fGetType = "vbEmpty" Case 1 fGetType = "vbNull" Case 2 fGetType = "vbInteger" Case 3 fGetType = "vbLong" Case 4 fGetType = "vbSingle" Case 5 fGetType = "vbDouble" Case 6 fGetType = "vbCurrency" Case 7 fGetType = "vbDate" Case 8 fGetType = "vbString" Case 9 fGetType = "vbObject" Case 10 fGetType = "vbError" Case 11 fGetType = "vbBoolean" Case 12 fGetType = "vbVariant" Case 13 fGetType = "vbDataObject" Case 14 fGetType = "vbDecimal" Case 17 fGetType = "vbByte" Case Else fGetType = "undetected" End Select End Function 
+3
Oct 31 2018-11-11T00:
source share

vartype is suitable ...

 Dim x x=123 msgbox VarType(x) 
+1
Aug 21 '11 at 19:28
source share
 Dim TypeDictionary Set TypeDictionary = CreateObject("Scripting.Dictionary") TypeDictionary.Add 0, "vbEmpty" TypeDictionary.Add 1, "vbNull" TypeDictionary.Add 2, "vbInteger" TypeDictionary.Add 3, "vbLong" TypeDictionary.Add 4, "vbSingle" TypeDictionary.Add 5, "vbDouble" TypeDictionary.Add 6, "vbCurrency" TypeDictionary.Add 7, "vbDate" TypeDictionary.Add 8, "vbString" TypeDictionary.Add 9, "vbObject" TypeDictionary.Add 10, "vbError" TypeDictionary.Add 11, "vbBoolean" TypeDictionary.Add 12, "vbVariant" TypeDictionary.Add 13, "vbDataObject" TypeDictionary.Add 17, "vbByte" Public Function GetType(argument) GetType = TypeDictionary.Item(VarType(argument)) End Function 

This version invests more effort in creating a dictionary, but then looks at any type in one check (with crossed fingers), and does not check every single type every time.

equivalent JScript code (hypothetical as JScript has typeof and lacks many vb types):

 var TypeDictionary = { 0: 'vbEmpty', 1: 'vbNull', 2: 'vbInteger', 3: 'vbLong', 4: 'vbSingle', 5: 'vbDouble', 6: 'vbCurrency', 7: 'vbDate', 8: 'vbString', 9: 'vbObject', 10: 'vbError', 11: 'vbBoolean', 12: 'vbVariant', 13: 'vbDataObject', 17: 'vbByte' }; var GetType = function() { return TypeDictionary[arguments[0]]; }; 
0
01 Sep '16 at 16:08
source share



All Articles