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

use*_*440 4 excel vba excel-vba

我遇到了一条DIM声明:

Dim a() As Byte, u&, j&, s&, n&, q
Run Code Online (Sandbox Code Playgroud)

定义字节数组的第一部分足够直接,但其余部分又做了什么?为什么变量名之后的"&"?

Vit*_*ata 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  
Run Code Online (Sandbox Code Playgroud)

当您将其分配给Variant类型时,您还可以声明文字的类型.例如,在这种情况下10将是类型Double,因为#:

Public Sub TestMe()
    Dim myVariant
    myVariant = 10#
    Debug.Print VarType(myVariant) = vbDouble 'returns True
End Sub
Run Code Online (Sandbox Code Playgroud)

资源