Excel VBA:DIM语句中变量后面加上“&”,比如“name&”

4

我看到了一个DIM语句:

Dim a() As Byte, u&, j&, s&, n&, q

第一部分定义了一个字节数组,这很简单易懂,但剩下的部分是干嘛用的?变量名后面的"&"是为什么?

2个回答

8
在VBA中,如果你声明Dim a, b, c as Long,只有最后一个变量c被声明为Long,其他两个ab则被声明为Variant。因此,有些人会使用特定的快捷方式来在一行中声明多个变量。这些快捷方式或缩写也称为“类型声明后缀”。
其中一种快捷方式是&,它将变量声明为Long。如果你不在结尾处写&,则它将被声明为Variant
因此,你的代码Dim a() As Byte, u&, j&, s&, n&, q等同于:Dim a() As Byte, u As Long, j As Long, s As Long, n As Long, q As Variant 总的来说,这种方法并不被建议,因为你应该始终记住符号的含义。然而,它更短且有效。以下是变量声明的快捷方式摘要:
Dim iNumber%     'Integer  
Dim lAverage&    'Long  
Dim sngTotal!    'Single  
Dim dbTotal#     'Double  
Dim cProfit@     'Currency  
Dim sFirstName$  'String  
Dim llDiscount^  'LongLong on 64 bit  

当你将一个文本赋值给Variant类型时,你可以声明它的类型。例如,在这种情况下,10 的类型是 Double,因为有 # 标记。

Public Sub TestMe()
    Dim myVariant
    myVariant = 10#
    Debug.Print VarType(myVariant) = vbDouble 'returns True
End Sub

Source


1
谢谢你的回复,@Vityata。每天都能学到新东西,真是很有启发性的。 :) - Xabier
1
谢谢@Vityata,官方资料中找不到这个快捷方式的参考。 - user9103440
1
你的列表非常有帮助。 - user9103440
@user9103440 - 欢迎,查看我的答案中的源代码。 - Vityata

0

还有一种类型@Vityata没有提到 - Decimal,但是你不能直接声明这种类型(实际上,甚至没有关键字来表示这种类型)。要拥有Decimal类型,您需要执行以下操作:

Dim d As Variant
d = CDec(10.55)
'Check:
MsgBox TypeName(d) 'Shows "Decimal"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接