上下文:在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调整此代码?
答案 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