数据类型摘要
数据类型是变量的特征,它决定了变量可以包含哪种数据。 数据类型包括下表中的类型以及用户定义类型和特定的对象类型。
设置固有数据类型
下表显示了受支持的数据类型,以及存储大小和范围。
数据类型 | 存储空间大小 | 范围 |
---|---|---|
Boolean | 2 个字节 | True 或 False |
Byte | 1 个字节 | 0 到 255 |
Collection | 未知 | 未知 |
Currency(缩放整数) | 8 个字节 | -922,337,203,685,477.5808 到 922,337,203,685,477.5807 |
Date | 8 个字节 | -657,434 (100) ,至 2,958,465 (9999 年 12 月 31 日) |
Decimal | 14 个字节 | +/-79,228,162,514,264,337,593,543,950,335,不带小数点 +/-7.9228162514264337593543950335,小数点右边有 28 位 最小非零数字为 +/-0.0000000000000000000000000001 |
Dictionary | 未知 | 未知 |
Double(双精度浮点) | 8 个字节 | 负值:-1.79769313486231E308 到 -4.94065645841247E-324 正值:4.94065645841247E-324 到 1.79769313486232E308 |
Integer | 2 个字节 | -32,768 到 32,767 |
Long(长整型) | 4 个字节 | -2,147,483,648 到 2,147,483,647 |
LongLong(LongLong 整型) | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 仅在 64 位平台上有效。 |
LongPtr(在 32 位系统上为长整型,在 64 位系统上为 LongLong 整型) | 在 32 位系统上为 4 个字节 在 64 位系统上为 8 个字节 |
在 32 位系统上为 -2,147,483,648 到 2,147,483,647 在 64 位系统上为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
Object | 4 字节 | 任何 Object 引用 |
Single(单精度浮点) | 4 个字节 | 负值:-3.402823E38 到 -1.401298E-45 正值:1.401298E-45 到 3.402823E38 |
String(可变长度) | 10 字节 + 字符串长度 | 0 到大约 20 亿 |
String(定长) | 字符串长度 | 1 到大约 65,400 |
Variant(带数字) | 16 个字节 | 达到 Double 的范围的任何数值 |
Variant(带字符) | 22 字节 + 字符串长度(在 64 位系统上的 24 字节) | 与变长 String 的范围相同 |
用户定义(使用 Type) | 元素所需的数字 | 每个元素的范围与其数据类型的范围相同。 |
包含数组的 Variant 所需的字节数比单独的数组多 12 个字节。
注意
[!注释] 任何数据类型的数组都需要 20 字节的内存加上每个数组维度的 4 字节加上数据本身占用的字节数。 数据所占用的内存可通过将数据元素的个数与每个元素的大小相乘来计算。
例如,包含 4 个 2 字节的 Integer 数据元素的一维度组中的数据占用 8 字节。 数据所需的 8 字节加上开销所用的 24 字节就得到该数组总内存要求为 32 字节。 在 64 位平台上,SAFEARRAY 占用 24 位(加上每个 Dim 语句 4 字节)。 pvData 成员是一个 8 字节的指针且它必须符合 8 字节边界。
注意
LongPtr 不是真正的数据类型,因为它在 32 位环境中会转换为 Long,或在 64 位环境中会转换为 LongLong。 LongPtr 应当用于在 Declare 语句中表示指针和句柄值,并且允许编写在 32 位和 64 位环境中均可运行的可移植代码。
注意
使用 StrConv 函数将一种类型的字符串数据转换为另一种类型的字符串数据。
标识符类型字符
提供了一组 标识符类型字符 ,可用于在声明中指定变量或常量的数据类型。 下表显示了可用的标识符类型字符以及用法示例。
标识符类型字符 | 数据类型 | 示例 |
---|---|---|
% |
整数 | Dim L% |
& |
长型 | Dim M& |
^ |
LongLong | Dim N^ |
@ |
货币 | Const W@ = 37.5 |
! |
单精度 | Dim Q! |
# |
双精度 | Dim X# |
$ |
String | Dim V$ = "Secret" |
、、Decimal
Double
Date
LongPtr
Byte
、Object
、、数据类型Variant
或任何复合数据类型(如数组、集合、字典、结构或用户定义的类型)不存在标识符类型字符。Boolean
在某些情况下,可以将 字符追加 $
到 Visual Basic 函数(例如 Left$
而不是 Left
),以获取类型的 String
返回值。
在所有情况下,标识符类型字符必须紧跟标识符名称。
数据类型之间的转换
有关如何使用以下函数将表达式强制转换为特定数据类型的示例,请参阅 类型转换函数 : CBool、 CByte、 CCur、 CDate、 CDbl、 CDec、 CInt、 CLng、 CLngLng、 CLngPtr、 CSng、 CStr 和 CVar。
有关以下函数的信息,请参阅相应的函数页面:CVErr、Fix 和 Int。
注意
CLngLng 仅在 64 位平台上有效。
验证数据类型
若要验证数据类型,请参阅以下函数:
另请参阅
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。