【VBA研究】VBA数据类型定义和管控
来源:互联网 发布:成都市软件行业协会 编辑:程序博客网 时间:2024/06/07 18:27
作者:iamlaosong
数据类型是对同一类数据的统称,如文本、日期、数值等。VBA里的数据类型有:字节型(Byte),整数型(Integer),长整数型(Long),单精度浮点型(Single),双精度浮点型(Double),货币型(Currency),小数型(Decimal),字符串型(文本型)(String),日期型(Date),布尔型(Boolean)。 VBA对数据类型定义的管控并不强,比如定义成整数型的变量同样可以赋值字符串,但是如果不注意,就会导致逻辑错误。
通过测试发现,如果一条语句定义多个变量,系统只对最后一个变量进行管控,比如下面的程序是不会报错的,也能实现其功能:
Sub tt() Dim ss, a, b, c, d As Integer a = 100 b = 200 c = a + b ss = "sum=" & c Cells(5, 1) = a Cells(5, 2) = b Cells(5, 3) = c Cells(5, 4) = ss a = 87654 b = 12348 c = a + b ss = "sum=" & c Cells(5, 5) = a Cells(5, 6) = b Cells(5, 7) = c Cells(5, 8) = ss End Sub
执行结果是正常的:
100200300 sum=3008765412348100002 sum=100002
不过,如果定义写成:Dim ss, a, b, c As Integer,则会报“溢出”错误。
同样,如果定义写成:Dim a, b, c, ss As Integer,则会报“类型不匹配”错误。也就是说,只对定义中最后一个变量进行管控。所以,如果要严格的进行变量类型管控,一次只能定义一个变量,也可以写成下列形式:
Dim a As Integer, b As Integer, c As Integer, ss As String
附:VBA中的数据类型
数据类型(名称)
大小(字节)
描述
Boolean
2
逻辑值True或False
Byte
1
0到255的整数
Integer
2
–32,768到32,767的整数
Long
4
–2,147,483,648到2,147,483,647的整数
Single
4
单精度浮点数值
负数:–3.402823E38到–1.401298E–45
正数:1.401298E–45到3.402823E38
Double
8
双精度浮点数值
负数:–1.79769313486231E308到–4.94065645841247E–324
正数:4.94065645841247E–324到1.79769313486231E308
Currency
8
(放大的整数(译者:整数除以10000得到的数值,参见VBA帮助))使用在定点计算中:
–922,337,203,685,477.5808到922,337,203,685,477.5807
Decimal
14
+/–79,228,162,514,264,337,593,543,950,335没有小数点;
+/–7.922816251426433759354395
最小的非0数字是
+/–0.000000000000000000000000
Date
8
从100年1月1日到9999年12月31日的日期
String(变长字符串)
10字节+字符串长度
变长字符串最多可包含大约 20 亿 ( 2^31)个字符。
String(定长字符串)
字符串长度
定长字符串最多可包含大约65,400 个字符。
Object
4
对象变量用来引用Excel中的任何对象
Variant(带数字)
16
最高范围到Double类型的任何数值
Variant(带字母)
22字节+字符串长度
和变长字符串的范围一样
用户定义类型
(使用Type)
成员所需的数值
每个成员的范围和它的数据类型的范围一致
- 【VBA研究】VBA数据类型定义和管控
- 【VBA研究】变量定义的类型和实际赋值类型
- VBA 数据类型
- 【VBA研究】VBA中日期和时间相关的计算
- VBA数据类型和类型转换函数
- vba
- vba
- vba
- vba
- VBA
- vba
- VBA
- VBA
- VBA
- VBA
- VBA
- vba
- vba
- [LeetCode]Merge Sorted Lists
- Project前面有红色感叹号
- 如何反编译APK
- Shell脚本与vi编辑器
- Oulipo
- 【VBA研究】VBA数据类型定义和管控
- PagerTabStrip和PagerTitleStrip
- HDU 5358 First One(枚举)
- 使用多线程
- Android虚拟机访问tomcat服务器下的文件
- 快速排序
- 现代软件工程的教材和参考书
- MySQL数据库表名、列名、别名区分大小写的问题及解决
- Blog开篇