vba快速入门04-数据类型
文章目录
VBA数据类型
与其它的编程语言一样,VBA也有它自己的数据类型。数据类型是对同一类数据的统称,如文本、日期、数值等。VBA里的数据类型有:字节型(Byte),整数型(Integer),长整数型(Long),单精度浮点型(Single),双精度浮点型(Double),货币型(Currency),小数型(Decimal),字符串型(文本型)(String),日期型(Date),布尔型(Boolean),变体类型(Variant)。
下表显示了VBA语言的数据类型,以及存储大小和范围。
数据类型 | 存储空间大小 | 范围 |
---|---|---|
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 个字节 | 公元 100 年 1 月 1 日到公元 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) | 元素所需的数字 | 每个元素的范围与其数据类型的范围相同。 |
上表是VBA里面所有的数据类型,有很多是平常的开发中用不到的,我们只讲解经常使用的数据类型。
数字类型
VBA中用于表示数字的数据类型有4种:整型Integer、长整型Long、单精度浮点型Single、双精度浮点型Double。整型及长整型用于表示整数,单精度与双精度浮点型都用于表示小数。
整型Integer 与 长整型Long
整型就是整数类型的略称,用来表示整数,包括正负整数。长整型就是表示范围比整型更大的整数。
整型与长整型的区别在于两者所能表示的数值范围不同:
整型数据能表示的数据范围:-32768 ~ 32767
长整型数据能表示的数据范围:-2147483648 ~ 2147483647
例1,声明整型变量intNumA,长整型变量lngNumB
|
|
以上程序的运行结果如下:
|
|
整数变量,长整数变量超出范围时,会报超出范围的错误,错误号码是6。
例2,声明超出整型范围intNumA,长整型范围lngNumB
|
|
以上程序的运行结果如下:
单精度浮点型Single 与 双精度浮点型Double
带有小数点的数字是浮点型。根据精度和大小分为单精度浮点数与双精度浮点数除。 单精度浮点数与双精度浮点数除了在数值范围不同之外,两者所能表示的数据精度(即小数点后多少位)也是不同的。
单精度浮点型能表示的数据范围 在表示负数时: -3.402823E38 ~ -1.401298E-45 在表示正数时: 1.401298E-45 ~ 3.402823E38
双精度浮点型能表示的数据范围 在表示负数时: -1.79769313486231E308 ~ -4.94065645841247E-324 在表示正数时: 4.94065645841247E-324 ~ 1.79769313486231E308
例3,声明单精度浮点型变量sngNumA,双精度浮点型变量dblNumB
|
|
以上程序的运行结果如下:
|
|
超出范围时,会报超出范围的错误,错误号码是6。
例4,声明超出范围的单精度浮点型变量sngNumA,双精度浮点型变量dblNumB
|
|
以上程序的运行结果如下:
注意: 单精度浮点型其精度是6,即只能保存小数点后最多6位的数据;双精度浮点型其精度是14,即只能保存小数点后最多14位的数据。如果超出以上长度,则超出部分会被去掉。在VBE编辑器中,超出14位以后的数字是输入不了得。
例5,单精度浮点型变量和双精度浮点型变量的小数位
|
|
以上程序的运行结果如下:
|
|
因为在数字的表示范围上长整型大于整型,而双精度浮点型大于单精度浮点型,理论上来说,如果把变量定义为表示范围更大的数据类型可以更好地避免掉数据溢出的问题。但在定义变量时,应当遵守的一个原则就是:够用就好。而不是越大越好。所以通常如果整型和单精度浮点型就足以表示数据的话,应当使用它们而不是长整型和双精度浮点型。
字符串类型String
字符串是用于保存文本数据的,字符串内容应放置于双引号内。双引号只是表示字符串的起止,并不是字符串的一部分。
布尔型Boolean
布尔型数据用于表示逻辑值:真、假 。其中“真”为True,“假”为False。布尔值数据常用于条件判断语句。
例6,声明布尔型Boolean变量blnA,blnB
|
|
以上程序的运行结果如下:
|
|
将其他数值类型转换为布尔值时,0 将变为 False,所有其他值均变为 True。将布尔值转换为其他数据类型时,False 将变为 0,True 将变为 -1。
日期型Date
日期型数据不仅可以表示日期,还可以表示时间。可以表示的日期范围是:100年1月1日 ~ 9999年12月31日;可以表示的时间范围是:0:00:00 ~ 23:59:59。
任何可识别日期文字都可以分配给Date变量。 日期文字必须包含在数字符号 (#) 中, 例如, #January 1, 1993# 或 #1 Jan 93#。 Date变量根据计算机所设置的短日期格式显示日期,基于计算机识别的时间格式(12 小时或 24 小时)显示时间。
例7,声明日期型变量dtA,dtB。now函数是获取现在的日期时间点。
|
|
以上程序的运行结果如下:
|
|
变体型Variant
变体型数据是一种特殊的数据类型,它包含除固定长度 String 数据以外的任何类型的数据,还可以包含特殊值Empty、Error、Nothing 和 Null。可以简单地理解为:当不知道变量所要表示的数据是什么类型时,就把它定义为Variant(但这种操作应当尽量避免)。可以使用VarType函数或TypeName函数来确定Variant中的数据。
例8,声明变体型变量varA,varB。赋值时分别设置为日期型和整型。
|
|
以上程序的运行结果如下:
|
|
字节类型byte
Byte变量存储为一个不带符号的 8 位(1 个字节)数字,值范围为0-255。Byte数据类型对于二进制数据非常有用。
转载请注明本网址。