Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1412to1416
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

generelle Frage: Weitergabe von Variablen

generelle Frage: Weitergabe von Variablen
12.03.2015 10:31:50
Variablen
Hallo Fachleute,
ich hab mal eine grundsätzliche Frage: Kann es Probleme machen, wenn bei der Weitergabe von einem Makro an ein Folgemakro die Reihenfolge der Variablen in der Klammer getauscht wird?
Ich hatte das Problem:
- zum einen der Aufruf: Call auflisten(clTitel, strTarget, strTargetSort)
- das Folgemakro: Sub auflisten(strTarget, clTitel, strTargetSort)
dabei hat strTarget seinen Wert verloren.
Als ich dann die Reihenfolge der Variablen bei beiden gleich gemacht habe, hat's funktioniert.
Meine Frage nun: liegt's tatsächlich an der Reihenfolge der Variablen? Oder ist da zufällig was anderes passiert, worauf ich achten muss?
Danke schonmal undGrüße
Franz

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: generelle Frage: Weitergabe von Variablen
12.03.2015 10:50:29
Variablen
Hi Franz
Ja, auch wenn die Variablen gleich heissen. Beispiel:
Sub test()
Dim x As Integer, y As Integer
x = 1
y = 2
Call auflisten(x, y)
End Sub

Sub auflisten(y As Integer, x As Integer)
MsgBox x
MsgBox y
End Sub

x wird zu y
Ausserdem solltest du die Variablen deklarieren.

Sub auflisten(strTarget As String, clTitel As ?, strTargetSort As String)
cu
Chris

AW: generelle Frage: Weitergabe von Variablen
12.03.2015 11:32:54
Variablen
Hallo Chris,
okay, danke, dann weiß ich, dass ich da drauf zu achten habe.
Wie ist das mit dem Deklarieren? Ich hab die Variablen schon deklariert, zur Vereinfachung zunächst erstmal als Public.
Meinst Du, ich kann das beibehalten? Oder wäre es besser sie so zu deklarieren wie Du in Deinem Beispiel: also sowohl im aufrufenden Makro, dann aber auch nochmals im Folgemakro?
Grüße
Franz

Anzeige
AW: generelle Frage: Weitergabe von Variablen
12.03.2015 12:58:48
Variablen
Hi Franz
Wenn du die Variable als Public deklarierst, dann musst du die auch nicht übergeben.
Public x As Integer
Sub test2()
x = 5
Call auflisten2
End Sub

Sub auflisten2()
MsgBox x
End Sub

' ------------------------------------
Oder du übergibst die Variable in eine neue Variable. Zufälligerweise hast du beiden den gleichen Namen gegeben, aber der Name könnte auch anders lauten.
Sub test()
Dim x As Integer, y As Integer
x = 1
y = 2
Call auflisten(x, y)
End Sub

Sub auflisten(a As Integer, b As Integer)
MsgBox a
MsgBox b
End Sub

cu
Chris

Anzeige
AW: generelle Frage: Weitergabe von Variablen
12.03.2015 13:25:43
Variablen
Hallo Chris,
okay, verstanden, wenn ich die Variablen übergebe, kann ich sie auch in neue Variablen übergeben - aber dabei ist eben die Reihenfolge wichtig.
Darf ich noch ein Mal nachfragen: ist es problemlos mit Public zu arbeiten? Oder gibt es Gründe, dass "man das nicht gerne macht", spricht also irgendwas Grundsätzliches dagegen? Erhört das z. B. den Speicherbedarf signifikant und bremst die Performance? O. ä...............
Grüße
Franz

AW: generelle Frage: Weitergabe von Variablen
12.03.2015 13:41:37
Variablen
Hi Franz
Gute Frage. Selber verzichte ich wenn immer möglich auf Public Variablen, aber warum eigentlich :)
Speicherbedarf für ein paar Variablen scheint mir bei heutigen PC's kaum mehr ein Argument.
Es geht wohl eher um Übersichtlichkeit und Fehlerquelle (z.B. wenn du vergisst den Wert einer Variable zurück zu setzen oder gleiche Namen für unterschiedliche Variablen verwendest). Solche Fehler können natürlich auch sonst passieren, aber wenn du mit Public arbeitest scheint mir die Chance höher und das Debuggen aufwändiger (z.B. nachvollziehen in welchem Sub die Variable mit einem bestimmten Wert belegt wurde).
Vermutlich ist es auch Geschmackssache oder es gäbe noch andere Argumente, die ich nicht kenne.
cu
Chris

Anzeige
AW: generelle Frage: Weitergabe von Variablen
12.03.2015 13:43:35
Variablen
ok, Chris,
Vielen Dank und viele Grüße
Franz

Man muss nur beachten, dass sie ggf ihren ...
12.03.2015 18:29:45
Luc:-?
…Wert verlieren können, Franz,
wenn etwas gründlich schief läuft. Aber das tritt eher nur in der TestPhase häufiger auf, wenn zwischendurch etwas am Pgm geändert wird. Ansonsten, wenn man weder Objekte noch Datenfelder (Arrays) in derartigen Variablen verwendet, sollte es überhpt keine Probleme geben, wenn man beachtet, Variablen unter gleichem Namen nicht auch noch in einzelnen Prozeduren zu deklarieren. Das kann man zwar machen, aber dann haben diese Vorrang vor den globalen.
Übrigens, statt Range-Objekten kann man auch ihre Adressen (bzw definierte Namen), ggf auch als leicht änderbare Konstante, global u/o lokal verwenden; bei anderen Objekten halt deren Namen (Titel!).
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Man muss nur beachten, dass sie ggf ihren ...
12.03.2015 19:28:05
Franz
Hallo Luc,
danke! Ich hab da soweit fertig, und es scheint stabil zu sein, hab's aus verschiednen Richtungen probiert. Tatsächlich hab ich jetzt uach Range-Objekte eingesetzt. Da mach ich mich jetzt mal drüber und werd Deinen Tipp mit den Adressen umsetzen und mal schauen wie ich damit zurechtkomme.
Aber auch bei den Public-Variablen werd ich (zumindest vorerst) dabei bleiben, sie zu übergeben (auch wenn's eigentlich nicht nötig wäre). Aber es mach es für mich übersichtlicher und klarer, wenn ich gleich beim makro-Namen sehe, was verarbeitet wird
Vielen Dank und viele Grüße
Franz

Anzeige
Ja, das kann oft zweckmäßig sein, wenn man ...
12.03.2015 21:30:08
Luc:-?
…eine SubProzedur stets nur parametriert aufruft, Franz,
geht aber bei Prozeduren zu StandardEreignissen nicht, denn deren Parametrierung kann und darf nicht verändert wdn! Hier führt dann mitunter kein Weg an Global­Konstanten und -Variablen vorbei.
Luc :-?

AW: generelle Frage: Weitergabe von Variablen
12.03.2015 10:51:06
Variablen
Hallo,
da die Parameter in der Prozedur Auflisten alle vom Typ Variant sind, sollten auch alle Variablen aus der aufrufenden Prozedur ankommen. Nur Target und Titel wären vertauscht. Wenn du die Parameter benennst, dann kannst du die Reihenfolge beliebig ändern.
Gruß
Nepumuk

AW: generelle Frage: Weitergabe von Variablen
12.03.2015 11:38:19
Variablen
Hallo Nepumuk,
schön von Dir zu hören :-))
Die Variablen sind nicht variant, ich hab sie schon deklariert, aber als Public, daher ist es bei der Übergabe nicht mehr erschienen. Es scheint aber wohl besser zu sein, wie ich jetzt annehme, wenn ich sie explizit jedesmal beim Aufrufen und beim Übergeben nochmals deklariere - seh ich das richtig?
Grüße
Franz

Anzeige
Wenn jede Variable einen anderen Datentyp ...
12.03.2015 11:37:03
Luc:-?
…u/o anderen WerteBereich hat, Franz,
kann man auch davon abhängig machen, was was ist.
Gruß, Luc :-?
Besser informiert mit …

AW: Wenn jede Variable einen anderen Datentyp ...
12.03.2015 11:40:38
Franz
auch Dir danke, Luc,
jetzt hab ich ein paar neue Informationen, mit denen ich mich jetzt weiterversuchen kann.
Danke und Grüße
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige