如何在VBA中使用As声明具有指定类型的多个变量?

时间:2019-03-08 09:14:46

标签: excel vba declaration variable-declaration

根据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)输出进行检查时,情况并非如此。

enter image description here

如您所见,看来As仅对变量本身起作用,即cyi。所有其他均为变量/空,并且VarType返回0。

这仅仅是文档有误,还是我遗漏了一些明显的东西?

用于应用程序7.1.1056的Microsoft Visual Basic Excel 2016(Windows 10)

2 个答案:

答案 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