Ms access Byref vs Byval vba澄清
我写了一些VBA来加深我对Byref和Byval的理解。这就是我正在使用的:Ms access Byref vs Byval vba澄清,ms-access,vba,Ms Access,Vba,我写了一些VBA来加深我对Byref和Byval的理解。这就是我正在使用的: Private Function Checkcase() Dim i As Integer i = 1 Debug.Print i num(i) Debug.Print i End Function Public Function num(ByRef i As Integer) i = 5 End Function 输出 1 1 但是,当我在num(I)前面
Private Function Checkcase()
Dim i As Integer
i = 1
Debug.Print i
num(i)
Debug.Print i
End Function
Public Function num(ByRef i As Integer)
i = 5
End Function
输出1
1 但是,当我在
num(I)
前面使用call
关键字时,如下所示:
call num(i)
输出更改为1
5 我希望在这两种情况下的输出都是1和5,因为我正在更改变量I的引用。
num(I)
是这里的错误。当调用sub或函数而未获得返回值时,不得在参数周围加括号
当您将带括号的参数传递给需要ByRef
参数的函数时,这些参数将自动转换为ByVal
使用callnum(i)
或删除括号num i
参考资料:
如果省略Call关键字,还必须省略argumentlist周围的括号
与往常一样,如果在参数不止一个时在其周围加上括号,编译器会给您一个“语法错误”,但当只有一个参数时,它会认为您需要显式的
ByVal
。