Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Für VBA-Experten Application.Run

Für VBA-Experten Application.Run
13.12.2022 17:29:17
Daniel
Hallo
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Für VBA-Experten Application.Run
14.12.2022 19:23:14
Luschi
Hallo Daniel,
wenn ich einen Rückgabewert brauche, dann mache ich das so:

Sub test2()
Dim x, y, Ergebnis
x = 3
y = 4
Ergebnis = "leer"
Ergebnis = Application.Run("Potenz_1", x, y)
Debug.Print "Application normal: "; Ergebnis
End Sub
Function Potenz_1(Basis, Hochzahl) As Variant
Potenz_1 = Basis ^ Hochzahl
End Function
Gruß von Luschi
aus klein-Paris
AW: Für VBA-Experten Application.Run
14.12.2022 19:43:28
Daniel
ja, schon klar.
Aber darum gings nicht.
Die Frage war, warum Application.Run normalerweise die Variablen nur byVal übergibt, während eine Übergabe byRef möglich wird, wenn man Application einer Variablen zuweist und diese verwendet.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge