excel - 询问有关将数组元素传递给 VBA 中的函数的评论
问题描述
我有以下 VBA 代码:
Function InputElmt(element As Double) As Variant
InputElmt = element
End Function
Sub runInputElmt()
Dim arr() As Variant, Firstelmt As Double
arr = Array(1, 2)
Debug.Print InputElmt(arr(0) * 1) ' 1st call
Firstelmt = arr(0)
Debug.Print InputElmt(Firstelmt) ' 2nd call
Debug.Print InputElmt(arr(0)) ' 3rd call: error
End Sub
sub 调用该函数InputElmt
3 次。前两个产生正确的结果,而最后一个导致错误(请参阅编译错误)。
我的解释是第三次调用将字符串传递arr(0)
给函数而不是其评估。相反,在前两个调用arr(0)
中进行评估。
我的问题是
1)我的解释正确吗?和
2) 此错误是否与错误消息可能表明的 ByRef 或 ByVal 相关?
解决方案
你有两个选择
第一的
Function InputElmt(ByVal element As Double) As Variant
InputElmt = element
End Function
第二
Debug.Print InputElmt((arr(0))) ' 3rd call: no error with parentheses
注意括号
将参数放在自己的一组括号中会强制将其作为表达式进行评估。
有关更多信息,请查看文档
推荐阅读
- android - Getting Album Artwork in flutter
- python - Mutagen 和 Lyrics3v2 的标签
- express - 添加“返回”后“错误 [ERR_HTTP_HEADERS_SENT]:无法在将标头发送到客户端后设置标头”
- greengrass - AWS Greengrass 中的组件未从设备中删除
- python - 基于类别对列表进行分组的算法
- python - cpp python boost集成导致系统负载异常
- java - 通过自定义 Java 运行时映像(使用 Jlink 创建)运行 .exe 文件(从 .jar 转换)的正确方法是什么?
- android - VideoView - Android 活动关闭
- javascript - 保持滚动可见,但在导航菜单打开时禁用
- node.js - 如何在 express js 中导出验证器