根据this documentation by Microsoft,以下代码可用于确保;
a,b和c均为Single; x和y均为Double
Dim a, b, c As Single, x, y As Double, i As Integer
> a, b, and c are all Single; x and y are both Double
其背后的逻辑如下
可以为声明的每个变量使用单独的
As
子句,为不同的变量指定不同的数据类型。每个变量都采用在变量名部分之后遇到的第一个As
子句中指定的数据类型。
但是,当我使用调试器或MsgBox VarType(a)
输出进行检查时,情况并非如此。
如您所见,看来As
仅对变量本身起作用,即c
,y
和i
。所有其他均为变量/空,并且VarType
返回0。
这仅仅是文档有误,还是我遗漏了一些明显的东西?
用于应用程序7.1.1056的Microsoft Visual Basic Excel 2016(Windows 10)
答案 0 :(得分:4)
您链接到的文档没有错,但是是为VB.NET而非VBA编写的。
如您所见,在VBA中,没有紧跟As <type>
后跟的变量声明将是Variant
。
因此,您需要编写:
Dim a As Single, b As Single, c As Single, x As Double, y As Double, i As Integer
答案 1 :(得分:1)
在VBA中,当您声明
Dim a, b, c As Single
它的作用等同于此:
Dim a As Variant, b As Variant, c As Single
我认为最佳实践是始终在单独的行中声明变量。它可以防止该错误,还可以更快地扫描代码。因此代码如下所示:
Dim a As Single
Dim b As Single
Dim c As Single