VBA由于语法的不严谨,所以导致了某些时候,看起来已经被分配了数据类型的变量,实际上并没有被分配数据类型。
下面以Single数据类型为例,Single数据类型可以容纳下8位。也就是123456.7
我们看下面的例子文章源自原紫番博客-https://www.yuanzifan.com/4532.html
Sub text()文章源自原紫番博客-https://www.yuanzifan.com/4532.html
Dim a, b As Single文章源自原紫番博客-https://www.yuanzifan.com/4532.html
Dim aa As Single文章源自原紫番博客-https://www.yuanzifan.com/4532.html
Dim T1 As Single文章源自原紫番博客-https://www.yuanzifan.com/4532.html
Dim T2 As Single文章源自原紫番博客-https://www.yuanzifan.com/4532.html
T1 = 1234656.7889文章源自原紫番博客-https://www.yuanzifan.com/4532.html
T2 = 123465.789文章源自原紫番博客-https://www.yuanzifan.com/4532.html
a = 1234567.89文章源自原紫番博客-https://www.yuanzifan.com/4532.html
aa = 1234657.89文章源自原紫番博客-https://www.yuanzifan.com/4532.html
Debug.Print "a="; a
Debug.Print "aa="; aa
a = T1 + T2
Debug.Print "a="; aa
End Sub
+++++++++++
上述代码的打印结果如下:
a= 1234567.89
aa= 1234658
a= 1234658
这里有一个比较奇怪的一点,就是变量a和aa 被赋予了同样的值1234567.89。但是输出的时候,
a= 1234567.89
aa= 1234658
这是因为,定义时候的不同:
Dim a, b As Single ‘此定义中,实际上只给变量b定义成了Single类型的变量,变量a的实际类型为empty(即没有任何类型)
Dim aa As Single ‘此定义中,aa被定义成了Signle类型的变量。即在变量定义中,只有as之前的变量,才会被赋予成as之后的那个类型。
你写100个变量,用逗号分割,再as String,实际上只是给最后一个变量赋予了String类型,其他都没有赋予。
这就可以解释,为什么同样的赋值,a和aa的值就变得有所不同。
但是,再看T1和T2,两个都是Single类型,将这个两个值相加,再把结果赋给aa,那么aa登时就变成了single类型。输出结果于是只能包含8位。
所以,在大量定义变量的时候,不要使用逗号,而要使用多行。
评论