我写了一些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
但是,当我在call前面使用num(i)关键字时,例如:
call num(i)输出更改为
1
5
在这两种情况下,我都期望输出为1和5,因为我正在更改变量i的引用。
发布于 2018-12-14 09:08:05
num(i)是这里的错误。当您调用一个子函数或函数而没有得到返回值时,您不能在参数周围加上括号。
当您将带括号的参数传递给期望使用ByRef参数的函数时,这些参数将自动转换为ByVal。
要么使用Call num(i),要么删除括号num i
参考资料:打电话:
如果省略Call关键字,还必须省略argumentlist周围的括号。
一如既往,网站是必读的。
https://stackoverflow.com/questions/53776423
复制相似问题