2017-11-24 2 views
0

Kontext: In Microsoft Access versuche ich, Funktionen dynamisch aufzurufen und Parameter zu übergeben, die Application.Run verwenden. Mein Code arbeitet unten in Excel 2013, aber funktioniert nicht in Access 2013Zugriff VBA Kompilierfehler Ungültige ParamArray Verwendung

Code:

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 

Returns Ausgabe:

This works 
This works too 
This works too as well 

Fehler: jedoch in Microsoft Access, die Derselbe Code gibt den Fehler: Compile error: Invalid ParamArray use.

Gibt es eine Möglichkeit, diesen Code für Access VBA anzupassen?

Antwort

1

Sie können ein ParamArray nicht direkt an eine andere Funktion übergeben.

Versuchen Sie Folgendes:

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

Großer Dank Erik. Aus Neugier, warum funktioniert das in Excel und nicht Access? –

+0

Ich habe mehrere seltsame/buggy Dinge über 'Application.Run' in Excel bemerkt, wie' Application.Run "MyFunction()" 'MyFunction' zweimal (verursacht einen Laufzeitfehler in Access). Alles was ich sagen kann ist: es sollte nicht funktionieren afaik. –

Verwandte Themen