Access to this page requires authorization. You can try
.
Access to this page requires authorization. You can try
A data type is the characteristic of a variable that determines what kind of data it can hold. Data types include those in the following table as well as user-defined types and specific types of objects.
Set intrinsic data types
The following table shows the supported
data types
, including storage sizes and ranges.
Data type
Storage size
Range
Decimal
14 bytes
+/-79,228,162,514,264,337,593,543,950,335 with no decimal point
+/-7.9228162514264337593543950335 with 28 places to the right of the decimal
Smallest non-zero number is+/-0.0000000000000000000000000001
Dictionary
Unknown
Unknown
Double
(double-precision floating-point)
8 bytes
-1.79769313486231E308 to -4.94065645841247E-324 for negative values
4.94065645841247E-324 to 1.79769313486232E308 for positive values
Integer
2 bytes
-32,768 to 32,767
Long
(Long integer)
4 bytes
-2,147,483,648 to 2,147,483,647
LongLong
(LongLong integer)
8 bytes
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
Valid on 64-bit platforms only.
LongPtr
(Long integer on 32-bit systems, LongLong integer on 64-bit systems)
4 bytes on 32-bit systems
8 bytes on 64-bit systems
-2,147,483,648 to 2,147,483,647 on 32-bit systems
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 on 64-bit systems
Object
4 bytes
Any
Object
reference
Single
(single-precision floating-point)
4 bytes
-3.402823E38 to -1.401298E-45 for negative values
1.401298E-45 to 3.402823E38 for positive values
String
(variable-length)
10 bytes + string length
0 to approximately 2 billion
String
(fixed-length)
Length of string
1 to approximately 65,400
Variant
(with numbers)
16 bytes
Any numeric value up to the range of a
Double
Variant
(with characters)
22 bytes + string length (24 bytes on 64-bit systems)
Same range as for variable-length
String
User-defined
(using
Type
)
Number required by elements
The range of each element is the same as the range of its data type.
A
Variant
containing an array requires 12 bytes more than the array alone.
Arrays
of any data type require 20 bytes of memory plus 4 bytes for each array dimension plus the number of bytes occupied by the data itself. The memory occupied by the data can be calculated by multiplying the number of data elements by the size of each element.
For example, the data in a single-dimension array consisting of 4
Integer
data elements of 2 bytes each occupies 8 bytes. The 8 bytes required for the data plus the 24 bytes of overhead brings the total memory requirement for the array to 32 bytes. On 64-bit platforms, SAFEARRAY's take up 24-bits (plus 4 bytes per Dim statement). The pvData member is an 8-byte pointer and it must be aligned on 8 byte boundaries.
LongPtr
is not a true data type because it transforms to a
Long
in 32-bit environments, or a
LongLong
in 64-bit environments.
LongPtr
should be used to represent pointer and handle values in
Declare statements
and enables writing portable code that can run in both 32-bit and 64-bit environments.
Use the
StrConv
function to convert one type of string data to another.
Identifier Type Characters
A set of
identifier type characters
are supplied that you can use in a declaration to specify the data type of a variable or constant. The following table shows the available identifier type characters with examples of usage.
Identifier type character
Data type
Example
No identifier type characters exist for the
Boolean
,
Byte
,
Date
,
Decimal
,
Double
,
LongPtr
,
Object
,
Variant
data types, or for any composite data types such as arrays, Collections, Dictionaries, structures, or user-defined types.
In some cases, you can append the
$
character to a Visual Basic function, for example
Left$
instead of
Left
, to obtain a returned value of type
String
.
In all cases, the identifier type character must immediately follow the identifier name.
Convert between data types
See
Type conversion functions
for examples how to use the following functions to coerce an expression to a specific data type:
CBool
,
CByte
,
CCur
,
CDate
,
CDbl
,
CDec
,
CInt
,
CLng
,
CLngLng
,
CLngPtr
,
CSng
,
CStr
, and
CVar
.
For the following, see the respective function pages:
CVErr
,
Fix
, and
Int
.
CLngLng
is valid on 64-bit platforms only.
Verify data types
To verify data types, see the following functions:
IsArray
IsDate
IsEmpty
IsError
IsMissing
IsNull
IsNumeric
IsObject
See also
VarType constants
Keywords by task
Visual Basic language reference
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see
Office VBA support and feedback
for guidance about the ways you can receive support and provide feedback.