What Are VBScript Data Types?
VBScript has only one data type called a Variant. A Variant is a special kind
of data type that can contain different kinds of information, depending on how
it's used. Because Variant is the only data type in VBScript, it's also the data
type returned by all functions in VBScript.
At its simplest, a Variant can contain either numeric or string
information. A Variant behaves as a number when you use it in a
numeric context and as a string when you use it in a string context.
That is, if you're working with data that looks like numbers, VBScript
assumes that it is numbers and does the thing that is most appropriate
for numbers. Similarly, if you're working with data that can only be
string data, VBScript treats it as string data. Of course, you can always
make numbers behave as strings by enclosing them in quotation
marks (" ").
Variant Subtypes
Beyond the simple numeric or string classifications, a Variant can
make further distinctions about the specific nature of numeric
information. For example, you can have numeric information that
represents a date or a time. When used with other date or time data,
the result is always expressed as a date or a time. Of course, you can
also have a rich variety of numeric information ranging in size from
Boolean values to huge floating-point numbers. These different
categories of information that can be contained in a Variant are called
subtypes. Most of the time, you can just put the kind of data you want
in a Variant, and the Variant behaves in a way that is most
appropriate for the data it contains.
The following table shows the subtypes of data that a Variant can
contain.
Subtype Description
Empty Variant is uninitialized. Value is 0 for numeric variables or a zero-length string
("") for string variables.
Null Variant intentionally contains no valid data.
Boolean Contains either True or False.
Byte Contains integer in the range 0 to 255.
Integer Contains integer in the range -32,768 to 32,767.
Currency -922,337,203,685,477.5808 to 922,337,203,685,477.5807.
Long Contains integer in the range -2,147,483,648 to 2,147,483,647.
Single Contains a single-precision, floating-point number in the range -3.402823E38 to
-1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive
values.
Double Contains a double-precision, floating-point number in the range
-1.79769313486232E308 to -4.94065645841247E-324 for negative values;
4.94065645841247E-324 to 1.79769313486232E308 for positive values.
Date Contains a number that represents a date between January 1, 100 to December
(Time) 31, 9999.
String Contains a variable-length string that can be up to approximately 2 billion
characters in length.
Object Contains an object.
Error Contains an error number.
You can use conversion functions to convert data from one subtype to
another. In addition, the VarType function returns information about
how your data is stored within a Variant.
Operators in VB Script :
VBScript has a full range of operators, including arithmetic operators,
comparison operators, concatenation operators, and logical operators.
Operator Precedence
When several operations occur in an expression, each part is evaluated
and resolved in a predetermined order called operator precedence. You
can use parentheses to override the order of precedence and force
some parts of an expression to be evaluated before others. Operations
within parentheses are always performed before those outside. Within
parentheses, however, standard operator precedence is maintained.
When expressions contain operators from more than one category,
arithmetic operators are evaluated first, comparison operators are
evaluated next, and logical operators are evaluated last. Comparison
operators all have equal precedence; that is, they are evaluated in the
left-to-right order in which they appear. Arithmetic and logical
operators are evaluated in the following order of precedence.
Arithmetic Comparison Logical
Description Symbol Description Symbol Description Symbol
Exponentiation ^ Equality = Logical negation Not
Unary negation - Inequality <> Logical And
conjunction
Multiplication * Less than < Logical Or
disjunction
Division / Greater than > Logical exclusion Xor
Integer division \ Less than or equal to <= Logical Eqv
equivalence
Modulus Mod Greater than or equal >= Logical Imp
arithmetic to implication
Addition + Object equivalence Is
Subtraction -
String &
concatenation
When multiplication and division occur together in an expression, each operation is
evaluated as it occurs from left to right. Likewise, when addition and subtraction occur
together in an expression, each operation is evaluated in order of appearance from left to
right.
The string concatenation (&) operator is not an arithmetic operator, but in precedence it
does fall after all arithmetic operators and before all comparison operators. The Is
operator is an object reference comparison operator. It does not compare objects or their
values; it checks only to determine if two object references refer to the same object.
Exponentiation operator ^
Description
Used to raise a number to the power of an exponent.
Syntax
result = number^exponent
The ^ operator syntax has these parts:
Part Description
result Any numeric variable.
number Any numeric expression.
exponent Any numeric expression.
Remarks
Number can be negative only if exponent is an integer value. When
more than one exponentiation is performed in a single expression, the
^ operator is evaluated as it is encountered from left to right.
If either number or exponent is a Null expression, result is also Null.
* Operator
Description
Used to multiply two numbers.
Syntax
result = number1*number2
The * operator syntax has these parts:
Part Description
result Any numeric variable.
number1 Any numeric expression.
number2 Any numeric expression.
Remarks
If one or both expressions are Null expressions, result is Null. If an
expression is Empty, it is treated as if it were 0.
/ Operator
Description
Used to divide two numbers and return a floating-point result.
Syntax
result = number1/number2
The / operator syntax has these parts:
Part Description
result Any numeric variable.
number1 Any numeric expression.
number2 Any numeric expression.
Remarks
If one or both expressions are Null expressions, result is Null. Any
expression that is Empty is treated as 0.
\ Operator
Description
Used to divide two numbers and return an integer result.
Syntax
result = number1\number2
The \ operator syntax has these parts:
Part Description
result Any numeric variable.
number1 Any numeric expression.
number2 Any numeric expression.
Remarks
Before division is performed, numeric expressions are rounded to
Byte, Integer, or Long subtype expressions.
If any expression is Null, result is also Null. Any expression that is
Empty is treated as 0.
Mod Operator
Description
Used to divide two numbers and return only the remainder.
Syntax
result = number1 Mod number2
The Mod operator syntax has these parts:
Part Description
result Any numeric variable.
number1 Any numeric expression.
number2 Any numeric expression.
Remarks
The modulus, or remainder, operator divides number1 by number2
(rounding floating-point numbers to integers) and returns only the
remainder as result. For example, in the following expression, A (which
is result) equals 5.
A = 19 Mod 6.7
If any expression is Null, result is also Null. Any expression that is
Empty is treated as 0.
+ Operator
Description
Used to sum two numbers.
Syntax
result = expression1 + expression2
The + operator syntax has these parts:
Part Description
result Any numeric variable.
expression1 Any expression.
expression2 Any expression.
Remarks
Although you can also use the + operator to concatenate two
character strings, you should use the & operator for concatenation to
eliminate ambiguity and provide self-documenting code.
When you use the + operator, you may not be able to determine
whether addition or string concatenation will occur.
The underlying subtype of the expressions determines the behavior of
the + operator in the following way:
If Then
Both expressions are numeric Add.
Both expressions are strings Concatenate.
One expression is numeric and the other is a string Add.
If one or both expressions are Null expressions, result is Null. If both
expressions are Empty, result is an Integer subtype. However, if only
one expression is Empty, the other expression is returned unchanged
as result.
- Operator
Description
Used to find the difference between two numbers or to indicate the
negative value of a numeric expression.
Syntax 1
result = number1-number2
Syntax 2
-number
The - operator syntax has these parts:
Part Description
result Any numeric variable.
number Any numeric expression.
number1 Any numeric expression.
number2 Any numeric expression.
Remarks
In Syntax 1, the - operator is the arithmetic subtraction operator used
to find the difference between two numbers. In Syntax 2, the -
operator is used as the unary negation operator to indicate the
negative value of an expression.
If one or both expressions are Null expressions, result is Null. If an
expression is Empty, it is treated as if it were 0.
& Operator
Description
Used to force string concatenation of two expressions.
Syntax
result = expression1 & expression2
The & operator syntax has these parts:
Part Description
result Any variable.
expression1 Any expression.
expression2 Any expression.
Remarks
Whenever an expression is not a string, it is converted to a String
subtype. If both expressions are Null, result is also Null. However, if
only one expression is Null, that expression is treated as a zero-length
string ("") when concatenated with the other expression. Any
expression that is Empty is also treated as a zero-length string.
+ Operator
Description
Used to sum two numbers.
Syntax
result = expression1 + expression2
The + operator syntax has these parts:
Part Description
result Any numeric variable.
expression1 Any expression.
expression2 Any expression.
Remarks
Although you can also use the + operator to concatenate two
character strings, you should use the & operator for concatenation to
eliminate ambiguity and provide self-documenting code.
When you use the + operator, you may not be able to determine
whether addition or string concatenation will occur.
The underlying subtype of the expressions determines the behavior of
the + operator in the following way:
If Then
Both expressions are numeric Add.
Both expressions are strings Concatenate.
One expression is numeric and the other is a string Add.
If one or both expressions are Null expressions, result is Null. If both
expressions are Empty, result is an Integer subtype. However, if only
one expression is Empty, the other expression is returned unchanged
as result.
Comparison Operators
Description
Used to compare expressions.
Syntax
result = expression1 comparisonoperator expression2
result = object1 Is object2
Comparison operators have these parts:
Part Description
result Any numeric variable.
expression Any expression.
comparisonoperator Any comparison operator.
object Any object name.
Remarks
The Is operator has specific comparison functionality that differs from
the operators in the following table. The following table contains a list
of the comparison operators and the conditions that determine
whether result is True, False, or Null:
Operator Description True if False if Null if
< Less than expression1 < expression1 >= expression1 or
expression2 expression2 expression2 = Null
<= Less than or expression1 <= expression1 > expression1 or
equal to expression2 expression2 expression2 = Null
> Greater than expression1 > expression1 <= expression1 or
expression2 expression2 expression2 = Null
>= Greater than or expression1 >= expression1 < expression1 or
equal to expression2 expression2 expression2 = Null
= Equal to expression1 = expression1 <> expression1 or
expression2 expression2 expression2 = Null
<> Not equal to expression1 <> expression1 = expression1 or
expression2 expression2 expression2 = Null
When comparing two expressions, you may not be able to easily
determine whether the expressions are being compared as numbers or
as strings.
The following table shows how expressions are compared or what
results from the comparison, depending on the underlying subtype:
If Then
Both expressions are numeric Perform a numeric comparison.
Both expressions are strings Perform a string comparison.
One expression is numeric and the other is a string The numeric expression is less
than the string expression.
One expression is Empty and the other is numeric Perform a numeric comparison,
using 0 as the Empty expression.
One expression is Empty and the other is a string Perform a string comparison,
using a zero-length string ("") as
the Empty expression.
Both expressions are Empty The expressions are equal.
And Operator
Description
Used to perform a logical conjunction on two expressions.
Syntax
result = expression1 And expression2
The And operator syntax has these parts:
Part Description
result Any numeric variable.
expression1 Any expression.
expression2 Any expression.
Remarks
If, and only if, both expressions evaluate to True, result is True. If
either expression evaluates to False, result is False. The following
table illustrates how result is determined:
If expression1 is And expression2 is The result is
True True True
True False False
True Null Null
False True False
False False False
False Null False
Null True Null
Null False False
Null Null Null
The And operator also performs a bitwise comparison of identically
positioned bits in two numeric expressions and sets the corresponding
bit in result according to the following table:
If bit in expression1 is And bit in The result
expression2 is is
0 0 0
0 1 0
1 0 0
1 1 1
Not Operator
Description
Used to perform logical negation on an expression.
Syntax
result = Not expression
The Not operator syntax has these parts:
Part Description
result Any numeric variable.
expression Any expression.
Remarks
The following table illustrates how result is determined:
If expression is Then result is
True False
False True
Null Null
In addition, the Not operator inverts the bit values of any variable and
sets the corresponding bit in result according to the following table:
Bit in expression Bit in result
0 1
1 0
Or Operator
Description
Used to perform a logical disjunction on two expressions.
Syntax
result = expression1 Or expression2
The Or operator syntax has these parts:
Part Description
result Any numeric variable.
expression1 Any expression.
expression2 Any expression.
Remarks
If either or both expressions evaluate to True, result is True. The
following table illustrates how result is determined:
If expression1 is And expression2 is Then result is
True True True
True False True
True Null True
False True True
False False False
False Null Null
Null True True
Null False Null
Null Null Null
The Or operator also performs a bitwise comparison of identically
positioned bits in two numeric expressions and sets the corresponding
bit in result according to the following table:
If bit in expression1 is And bit in Then
expression2 is result is
0 0 0
0 1 1
1 0 1
1 1 1
Xor Operator
Description
Used to perform a logical exclusion on two expressions.
Syntax
result = expression1 Xor expression2
The Xor operator syntax has these parts:
Part Description
result Any numeric variable.
expression1 Any expression.
expression2 Any expression.
Remarks
If one, and only one, of the expressions evaluates to True, result is
True. However, if either expression is Null, result is also Null. When
neither expression is Null, result is determined according to the
following table:
If expression1 is And expression2 is Then result is
True True False
True False True
False True True
False False False
The Xor operator also performs a bitwise comparison of identically
positioned bits in two numeric expressions and sets the corresponding
bit in result according to the following table:
If bit in expression1 is And bit in expression2 is Then result is
0 0 0
0 1 1
1 0 1
1 1 0
Variables in VB Script
What Is a Variable?
A variable is a convenient placeholder that refers to a computer
memory location where you can store program information that may
change during the time your script is running. For example, you might
create a variable called ClickCount to store the number of times a
user clicks an object on a particular Web page. Where the variable is
stored in computer memory is unimportant. What's important is that
you only have to refer to a variable by name to see its value or to
change its value. In VBScript, variables are always of one fundamental
data type, Variant.
Declaring Variables
You declare variables explicitly in your script using the Dim statement,
the Public statement, and the Private statement. For example:
Dim DegreesFahrenheit
You declare multiple variables by separating each variable name with a
comma. For example:
Dim Top, Bottom, Left, Right
You can also declare a variable implicitly by simply using its name in
your script. That's not generally a good practice because you could
misspell the variable name in one or more places, causing unexpected
results when your script is run. For that reason, the Option Explicit
statement is available to require explicit declaration of all variables.
The Option Explicit statement should be the first statement in your
script.
Naming Restrictions
Variable names follow the standard rules for naming anything in
VBScript. A variable name:
• Must begin with an alphabetic character.
• Cannot contain an embedded period.
• Must not exceed 255 characters.
• Must be unique in the scope in which it is declared.
Scope and Lifetime of Variables
A variable's scope is determined by where you declare it. When you
declare a variable within a procedure, only code within that procedure
can access or change the value of that variable. It has local scope and
is called a procedure-level variable. If you declare a variable outside a
procedure, you make it recognizable to all the procedures in your
script. This is a script-level variable, and it has script-level scope.
How long a variable exists is its lifetime. The lifetime of a script-level
variable extends from the time it's declared until the time the script is
finished running. At procedure level, a variable exists only as long as
you are in the procedure. When the procedure exits, the variable is
destroyed. Local variables are ideal as temporary storage space when
a procedure is executing. You can have local variables of the same
name in several different procedures because each is recognized only
by the procedure in which it is declared.
Assigning Values to Variables
Values are assigned to variables creating an expression as follows: the
variable is on the left side of the expression and the value you want to
assign to the variable is on the right. For example:
B = 200
Scalar Variables and Array Variables
Much of the time, you just want to assign a single value to a variable
you've declared. A variable containing a single value is a scalar
variable. Other times, it's convenient to assign more than one related
value to a single variable. Then you can create a variable that can
contain a series of values. This is called an array variable. Array
variables and scalar variables are declared in the same way, except
that the declaration of an array variable uses parentheses ( ) following
the variable name. In the following example, a single-dimension array
containing 11 elements is declared:
Dim A(10)
Although the number shown in the parentheses is 10, all arrays in
VBScript are zero-based, so this array actually contains 11 elements.
In a zero-based array, the number of array elements is always the
number shown in parentheses plus one. This kind of array is called a
fixed-size array.
You assign data to each of the elements of the array using an index
into the array. Beginning at zero and ending at 10, data can be
assigned to the elements of an array as follows:
A(0) = 256
A(1) = 324
A(2) = 100
. . .
A(10) = 55
Similarly, the data can be retrieved from any element using an index
into the particular array element you want. For example:
. . .
SomeVariable = A(8)
. . .
Arrays aren't limited to a single dimension. You can have as many as
60 dimensions, although most people can't comprehend more than
three or four dimensions. Multiple dimensions are declared by
separating an array's size numbers in the parentheses with commas.
In the following example, the MyTable variable is a two-dimensional
array consisting of 6 rows and 11 columns:
Dim MyTable(5, 10)
In a two-dimensional array, the first number is always the number of
rows; the second number is the number of columns.
You can also declare an array whose size changes during the time your
script is running. This is called a dynamic array. The array is initially
declared within a procedure using either the Dim statement or using
the ReDim statement. However, for a dynamic array, no size or
number of dimensions is placed inside the parentheses. For example:
Dim MyArray()
ReDim AnotherArray()
To use a dynamic array, you must subsequently use ReDim to
determine the number of dimensions and the size of each dmension.
In the following example, ReDim sets the initial size of the dynamic
array to 25. A subsequent ReDim statement resizes the array to 30,
but uses the Preserve keyword to preserve the contents of the array
as the resizing takes place.
ReDim MyArray(25)
. . .
ReDim Preserve MyArray(30)
There is no limit to the number of times you can resize a dynamic
array, but you should know that if you make an array smaller than it
was, you lose the data in the eliminated elements.