Excel VBA:"&"在DIM语句中的变量之后,例如" name&"

时间:2017-12-15 11:56:49

标签: excel vba excel-vba

我遇到了一条DIM声明:

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

定义字节数组的第一部分是直截了当的,但其余部分是做什么的?为什么"&"在变量名之后?

2 个答案:

答案 0 :(得分:7)

在VBA中,如果您声明Dim a, b, c as Long只将最后一个变量声明为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 :(得分:0)

还有一种类型@Vityata没有提及 - Decimal,但你不能直接声明这种类型(事实上,那里没有偶然的关键字)这个类型)。要拥有Decimal类型,您需要执行以下操作:

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