首页 > 解决方案 > 询问有关将数组元素传递给 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 调用该函数InputElmt3 次。前两个产生正确的结果,而最后一个导致错误(请参阅编译错误)。

我的解释是第三次调用将字符串传递arr(0)给函数而不是其评估。相反,在前两个调用arr(0)中进行评估。

我的问题是

1)我的解释正确吗?和

2) 此错误是否与错误消息可能表明的 ByRef 或 ByVal 相关?

标签: excelvba

解决方案


你有两个选择

第一的

Function InputElmt(ByVal element As Double) As Variant
    InputElmt = element
End Function

第二

Debug.Print InputElmt((arr(0)))       ' 3rd call: no error with parentheses

注意括号

将参数放在自己的一组括号中会强制将其作为表达式进行评估。

有关更多信息,请查看文档


推荐阅读