带/不带括号的VBA调用功能

时间:2019-03-24 19:47:41

标签: excel vba

当我(对我而言)注意到这种奇怪的行为时,我正在玩一些VBA。我知道默认情况下,Excel VBA通​​过引用传递参数,因此我希望从两种“调用方式”中,子TestSub都具有相同的结果。为什么当我用括号调用它时,其行为就像传递了参数ByVal一样?

我的期望:

TestSub (intSomeNumber) 'prints 15
TestSub intSomeNumber   'prints 15

现实:

TestSub (intSomeNumber) 'prints 10
TestSub intSomeNumber   'prints 15

代码如下:

Sub Macro_1()
    Dim intSomeNumber As Integer: intSomeNumber = 10

    ' If i'll call TestSub without parenthesis
    ' the value of intSomeNumber will be changed to 15 as expected
    TestSub intSomeNumber

    ' If i'll call TestSub with parenthesis
    ' the value won't change, so the result printed via Debug.Print will be 10
    'TestSub (intSomeNumber)

    Debug.Print CStr(intSomeNumber)
End Sub

Private Sub TestSub(argIntSomeNumber As Integer)
    argIntSomeNumber = 15
End Sub

0 个答案:

没有答案