Für VBA-Experten Application.Run
13.12.2022 17:29:17
Daniel
vor kurzem gabs hier eine Frage zu Application.Run mit Parameterübergabe.
dabei kam heraus, dass bei
Application.Run Makroname, Var1, Var2
die Übergabe immer byVal erfolgt und niemals byRef.von Peterk kam allerdings die Information ( https://bettersolutions.com/vba/macros/application-run.htm ), dass eine Übergabe byRef (also mit Rückgabe der veränderten Parameter in das aufrufende Makro) funktioniert, wenn man das Application als Objektvariable definiert, dh
dim APP as Object
Set APP = Application
APP.Run Makroname, Var1, Var2
zum selber testen hier mal ein vollständiger Testcode
Sub test1()
Dim x, y, Ergebnis
Dim App As Object
x = 3
y = 4
Ergebnis = "leer"
Application.Run "Potenz", x, y, Ergebnis
Debug.Print "Application normal: "; Ergebnis
Set App = Application
App.Run "Potenz", x, y, Ergebnis
Debug.Print "Application Variable: "; Ergebnis
End Sub
Sub Potenz(Basis, Hochzahl, Rückgabewert)
Rückgabewert = Basis ^ Hochzahl
End Sub
kennt jemand den technischen Hintergrund warum das so ist?Gruß Daniel