Hallo zusammen,
ich habe folgendes Problem.
Ich habe eine Funktion, die 2 Variablen zurückgeben soll, das Ergebnis der Funktion als solches und eine Variablen, die den Status des Durchlaufs (zum Fehler abfangen) zurückgibt. Ich habe dies mit einer collection "gelöst".
Bsp: (Funktion die einfach a durch b teilt)
Public Function Test(a As Double, b As Double) As Collection
Dim flag As Boolean
flag = True
Dim result As Collection
Set result = New Collection
Dim c As Double
On Error GoTo ENDE
c = a / b
result.Add (flag)
result.Add (c)
Set Test = result
Exit Function
ENDE:
flag = False
result.Add (flag)
Set Test = result
End Function
Public Sub Function_Call()
Dim a As Double, b As Double
Dim result As Collection
Set result = New Collection
a = 1
b = 0
Set result = Test(a, b)
End Sub
Im hier dargestellten Beispiel ist b=0 und wegen "Division by zero" ist result(1)=False und result(2) nicht gesetzt. Für b<>0 ist result(1)=Wahr und result(2) enthält das Ergebnis von a/b. Das klappt alles soweit wunderbar.
Mein Problem ist nun, dass ich den Namen der Funktion Test(a,b) als String habe und diese mit Evaluate ausführen möchte. Hintergrund ist, dass es eigentlich nicht nur Test gibt sondern noch ganz viele andere Funktionen und der Name der jeweiligen Funktion eben in einem String steht.
Weder
Dim func As String
func = "Set result = Test(a, b)"
Evaluate (func)
noch
Dim func As String
func = "Test(a, b)"
Set result = Evaluate(func)
funktionieren. Wäre super, wenn mir jemand helfen könnte. Vielleicht gibt es ja auch eine bessere Lösung, um 2 Variablen zurückzugeben. Danke!
Christoph
|