Excel VBA Parameter an eine Prozedur übergeben, deren Reihenfolge ändern?
In der Prozedur test wird die Prozedur zahlen aufgerufen. Es werden werden die Werte der Variablen a = 2 und b = 3 als Parameter an die Prozedur zahlen übergeben. a wird nun für x verwendet und b für y.
Gibt es eine Möglichkeit die Reihenfolge der Parameterübergabe zu vertauschen?
D. h a = 2 soll nicht x zugeordnet werden sondern y und b = 3 soll nicht y sondern x zugeordnet werden. Natürlich könnte man jetzt bei der Deklaration von
Sub zahlen(Byref y as integer, Byref x as Integer)
schreiben. So würde a = 2 dann y zugeordent werden und b = 3 dann x.
Gibt es eine andere Möglichkeit die Reihenfolge der Parameter bei der Übergabe zu vertauschen. Laut Lehrbuch:
► Kann mir dies jemand an meinem Bsp. erläutern, wie man dies macht?
3 Antworten
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Aktuell wird weitergegeben a -> x und b -> y
Schreibst du zahlen b,a wird b -> x und a -> y weitergegeben.
________________
Es gibt aber Beispiele wann das nicht geht! Aktuell empfängt zahlen je zwei Werte vom Typ Integer.
Angenommen das würde so aussehen:
zahlen(ByRef x As Integer, ByRef y As String)
und es würde in der Main stehen
zahlen 4, "textausdruck"
Dann geht das.
Es geht aber nicht:
zahlen "textausdruck" ,4
Hier darf nicht getauscht werden.
![](https://images.gutefrage.net/media/user/Gaterde/1527164089659_nmmslarge__0_0_300_300_9a4334409e63f908baa4b0bff88a688f.gif?v=1527164092000)
Du hast es ja schon so gemacht wie im Lehrbuch. Die andere Variante wäre, dass du beim Aufrufen der Funktion die Parameter vertauscht:
Dim a As Integer, b As Integer
a = 2
b = 3
zahlen b, a
MsgBox a & vbTab & b
Am säubersten ist der Code aber, wenn du wie im Lehrbuch erwähnt die Reihenfolge wie in der Deklaration verwendest. Dann musst du halt schon bei der Deklaration die Werte tauschen:
Dim a As Integer, b As Integer
a = 3
b = 2
zahlen a, b
MsgBox a & vbTab & b
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
naja, du kannst die funktion auch einfach so aufrufen
zahlen b, a
ansonsten geht das auch so
zahlen y:=a, x:=b
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Der Parameter y ist durch die Variable a definiert?
Danke schön!