Byref vs Byval 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

但是,当我callnum(i)like前面使用关键字时

call num(i)

输出变为
1
5

我在两种情况下都期望输出为1和5,因为我正在更改变量i的引用。

文森特·G

num(i)这是错误。当您在没有获得返回值的情况下调用子函数或函数时,切勿在参数周围加上括号。

当您将带有括号的参数传递给需要参数的函数时ByRef,这些参数将自动转换为ByVal

使用Call num(i)或删除括号num i

参考:致电

如果省略Call关键字,则还必须省略argumentslist的括号。

一如既往,Cpearson网站是必读

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章