2017-11-24 13 views
0

コンテキスト: Microsoft Accessでは、Application.Runを使用して、関数を呼び出してパラメータを動的に渡そうとしています。私のコードは、以下のエクセル2013で動作しますが、Accessでは動作しません。2013年Access VBAコンパイルエラー無効なParamArray使用

コード:

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

ParamArrayを別の関数に直接渡すことはできません。

次のことを試してみてください。

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

大感謝エリック。好奇心から、なぜこれはExcelではなくAccessで動作するのですか? –

+0

私は 'Application.Run" MyFunction() "' MyFunction'を2回実行する(Accessでランタイムエラーを起こす)など、Excelの 'Application.Run'について複数の奇妙な/バグのあるものに気付きました。私が言うことができるのは、それがアフリカでは働きません。 –

関連する問題