首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Byref诉Byval vba澄清

Byref诉Byval vba澄清
EN

Stack Overflow用户
提问于 2018-12-14 09:02:21
回答 1查看 123关注 0票数 1

我写了一些VBA来加深我对Byref和Byval的理解。这就是我所用的:

代码语言:javascript
复制
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)关键字时,例如:

代码语言:javascript
复制
call num(i)

输出更改为

1

5

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-14 09:08:05

num(i)是这里的错误。当您调用一个子函数或函数而没有得到返回值时,您不能在参数周围加上括号。

当您将带括号的参数传递给期望使用ByRef参数的函数时,这些参数将自动转换为ByVal

要么使用Call num(i),要么删除括号num i

参考资料:打电话

如果省略Call关键字,还必须省略argumentlist周围的括号。

一如既往,网站是必读的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53776423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档