提问人:Kouichi C. Nakamura 提问时间:3/8/2019 最后编辑:PᴇʜKouichi C. Nakamura 更新时间:3/8/2019 访问量:45333
如何在VBA中使用As声明多个具有指定类型的变量?
How to declare multiple variables with specifying type using As in VBA?
问:
根据 Microsoft 的此文档,可以使用以下代码来确保;
a、b 和 c 都是单;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)
正如你所看到的,它似乎只适用于它自己之前的变量,即 、 和 。所有其他值均为 Variant/Empty,并返回 0。As
c
y
i
VarType
这只是文档错误,还是我遗漏了一些明显的东西?
Microsoft Visual Basic for Application 7.1.1056 Excel 2016 (Windows 10)
答:
26赞
jsheeran
3/8/2019
#1
您链接到的文档没有错,但它是为 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
评论
4赞
Pᴇʜ
3/8/2019
另请参阅 VBA 的正确文档:Dim 语句
0赞
Kouichi C. Nakamura
3/9/2019
嗯,它清楚地解释了我遇到的情况。我没有意识到 Visual Basic 语言有很多变体!
2赞
NingNing
4/25/2020
这是一个疯狂的语言功能。
0赞
Brethlosze
3/14/2023
@NingNing Bug...
7赞
FFFffff
3/8/2019
#2
在 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
评论
0赞
Brethlosze
3/14/2023
很好地指出这是一个错误而不是一个功能
评论