我遇到了一条DIM声明:
Dim a() As Byte, u&, j&, s&, n&, q
定义字节数组的第一部分是直截了当的,但其余部分是做什么的?为什么"&"在变量名之后?
答案 0 :(得分:7)
在VBA中,如果您声明Dim a, b, c as Long
只将最后一个变量声明为Long
,则另外两个 - a
和b
将声明为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
答案 1 :(得分:0)
还有一种类型@Vityata没有提及 - Decimal
,但你不能直接声明这种类型(事实上,那里没有偶然的关键字)这个类型)。要拥有Decimal
类型,您需要执行以下操作:
Dim d As Variant
d = CDec(10.55)
'Check:
MsgBox TypeName(d) 'Shows "Decimal"