如何使用数组值作为函数参数

How to use array values as function parameter

我想将数组的值传递给接受这些参数的函数。当我根据提供的代码执行此操作时,我收到一条错误消息:"ByRef argument type mismatch" 我知道我的数组被声明为变体,但我传递给它的值来自函数的适当数据类型accept based on VarType(arrValues(1 - 3)) 那么应该对代码进行哪些更改?

这是我稍后将使用的代码的简化版本,其中该函数将实际 return 一些有用的东西,并将接收更多参数。

Sub CallFunctionWithArray()
    Dim arrValues(1 To 3) As Variant

    arrValues(1) = "One"
    arrValues(2) = 19 - 11 - 2019
    arrValues(3) = 25

    Call ReturnValuesOfArray(arrValues(1), arrValues(2), arrValues(3))

End Sub

Function ReturnValuesOfArray(ValueOne As String, ValueTwo As Date, ValueThree As Integer)
    Debug.Print ValueOne
    Debug.Print ValueTwo
    Debug.Print ValueThree
End Function

在这种情况下,期望代码为 运行 并将传递的数组的值打印为直接 window。

我不确定你想要实现什么,但是对于你发布的代码,你需要在函数头中添加 ByVal 关键字,就像这样

Function ReturnValuesOfArray(ByVal ValueOne As String, ByVal ValueTwo As Date, ByVal ValueThree As Integer)
    Debug.Print ValueOne
    Debug.Print ValueTwo
    Debug.Print ValueThree
End Function

您构建数组并将其作为 Variant 传递..
看看这里:

Private Sub Test()
Dim s(2) As String
s(0) = "X"
s(1) = "Y"
s(2) = "Z"
displayArr s

End Sub
Private Sub displayArr(ArrayInput As Variant)
For i = LBound(ArrayInput) To UBound(ArrayInput)
Debug.Print ArrayInput(i)
Next
End Sub