访问VBA编译错误无效的ParamArray使用

时间:2017-11-24 10:54:27

标签: vba ms-access access-vba

上下文:在Microsoft Access中,我正在尝试使用Application.Run动态调用函数和传递参数。我的下面的代码适用于Excel 2013,但在Access 2013中不起作用。

代码:

Public Sub Test()
    Call MethodDynamically("MethodToBeCalled1", "This", "works")
    Call MethodDynamically("MethodToBeCalled2", "This", "works", "too")
    Call MethodDynamically("MethodToBeCalled3", "This", "works", "too", "as well")
End Sub

Public Sub MethodDynamically(MethodName As String, ParamArray Params() as Variant)
    Application.Run MethodName, Params
End Sub
Public Sub MethodToBeCalled1(Params As Variant)
    Debug.Print Params(0) & " " & Params(1)
End Sub
Public Sub MethodToBeCalled2(Params As Variant)
    Debug.Print Params(0) & " " & Params(1) & " " & Params(2)
End Sub
Public Sub MethodToBeCalled3(Params As Variant)
    Debug.Print Params(0) & " " & Params(1) & " " & Params(2) & " " & Params(3)
End Sub

返回输出:

This works
This works too
This works too as well

错误:但是在Microsoft Access中,相同的代码会显示错误:Compile error: Invalid ParamArray use

有没有办法为Access VBA调整此代码?

1 个答案:

答案 0 :(得分:2)

您无法直接将ParamArray传递给其他函数。

尝试以下方法:

Public Sub MethodDynamically(MethodName As String, ParamArray Params() as Variant)
    Dim MyArray As Variant
    MyArray = Params
    Application.Run MethodName, MyArray
End Sub