In the VarType MSDN Microsoft documentation for VBScript\'s VarType
function it says (With bold emphasis):
\"Remarks The VarType function
From documentation
In VBScript, variables are always of one fundamental data type, Variant.
Data contained in the variable can be of any type, but variables itself are always of Variant
type. Checking with VarType
the contents of a position of an array will return the type of data contained. But the array itself is a compound of "cells" of Variant
type
So, in your case VarType
will return vbArray
(8192) + vbVariant
(12) = 8204
Although VBscript lacks the syntax to declare arrays of any type other than "variant array of variants", its variant type and variant array type are not limited in that way. The variant type is a COM type, AKA a Visual Basic 4+ type, AKA a version of an Excel xloper (an Excel cell type).
You can get VBscript "vartype" to return any other kind of array type by using it on an array created externally:
obj = CreateObject("System.IO.MemoryStream")
obj.SetLength 0
obj.WriteByte 1
obj.WriteByte 2
A = obj.ToArray()
wscript.echo vartype(A)
It's simply an error in documentation:
==>type D:\VB_scripts\SO\30511987.vbs
option explicit
Dim ii, aA(3)
aA(1)=5
aA(2)="string"
aA(3)=Now
Wscript.Echo "array", VarType(aA), TypeName(aA)
For ii=0 To UBound(aA)
Wscript.Echo "aA(" & CStr(ii) & ")", VarType(aA(ii)), TypeName(aA(ii))
Next
==>cscript D:\VB_scripts\SO\30511987.vbs
array 8204 Variant()
aA(0) 0 Empty
aA(1) 2 Integer
aA(2) 8 String
aA(3) 7 Date
==>