While - End ist dazu da um eine Befehlsabfolge eine unbestimmte Anzahl von Malen auszuführen, "unbestimmt" in dem Sinne das es sich erst während des Ablauf des Makros ergibt und nicht schon zum Zeitpunkt der Programmierung feststeht.
Man nennt solche mehrfach zu durchlaufenden Befehlsabfolgen auch allgemein "Schleifen", gilt nicht für für While-Wend, sonden auch für Do-Loop, For-Next, usw.
Die Struktur bei While-Wend ist immer:
Code: Alles auswählen
While <irgeneine zu prüfende Bedingung>
<Befehle die auszuführen sind>
Wend (kennzeichnet nur das Schleifenende)
Weil hier die Bedingung am Anfang der Schleife geprüft wird nennt man sowas auch kopfgesteuert, hingegen wäre das folgende do-loop fussgesteuert, weil die Bedingung am Ende der Schleife geprüft wird
aber weiter mit While - Wend:
sobald das Makro zu der Zeile kommt die mit While beginnt wird die Bedingung dahinter überprüft ob sie erfüllt ist und wenn sie das ist wird der nachfolgende Code ausgeführt bis WEnd ausgeführt und dann wieder zurück zum While gesprungen und erneut geprüft, wenn nicht wird sofort hinter WEnd fortgesetzt, Beispiele:
Ablauf ist:
i ist 0 also kleiner 3
deshalb wird 1 addiert und zurückgesprungen
i ist jetzt 1 also noch kleiner 3
deshalb wird 1 addiert und zurückgesprungen
i ist jetzt 2 also noch kleiner 3
deshalb wird 1 addiert und zurückgesprungen
i ist jetzt 3 also nicht mehr kleiner 3
deshalb wird zur Zeile Msgbox i gesprungen und damit 3 angezeigt
Ablauf ist:
i ist 0 also kleiner 3
deshalb wird sofort zur Zeile Msgbox i gesprungen und damit 0 angezeigt
Eine solche Schleife muss normalerweise immer Befehle enthalten die den zu prüfenden Wert irgendwie ändern, denn sonst besteht die Gefahr das sich das Makro in der Schleife fängt, d.h. die Schleife wird ewig wiederholt, z.B.:
Reicht das?
Gruß
Stephan
While - End ist dazu da um eine Befehlsabfolge eine unbestimmte Anzahl von Malen auszuführen, "unbestimmt" in dem Sinne das es sich erst während des Ablauf des Makros ergibt und nicht schon zum Zeitpunkt der Programmierung feststeht.
Man nennt solche mehrfach zu durchlaufenden Befehlsabfolgen auch allgemein "Schleifen", gilt nicht für für While-Wend, sonden auch für Do-Loop, For-Next, usw.
Die Struktur bei While-Wend ist immer:
[code]While <irgeneine zu prüfende Bedingung>
<Befehle die auszuführen sind>
Wend (kennzeichnet nur das Schleifenende)
[/code]
Weil hier die Bedingung am Anfang der Schleife geprüft wird nennt man sowas auch kopfgesteuert, hingegen wäre das folgende do-loop fussgesteuert, weil die Bedingung am Ende der Schleife geprüft wird
[code]i = 0
Do
i = i + 1
Loop While i < 10
[/code]
aber weiter mit While - Wend:
sobald das Makro zu der Zeile kommt die mit While beginnt wird die Bedingung dahinter überprüft ob sie erfüllt ist und wenn sie das ist wird der nachfolgende Code ausgeführt bis WEnd ausgeführt und dann wieder zurück zum While gesprungen und erneut geprüft, wenn nicht wird sofort hinter WEnd fortgesetzt, Beispiele:
[code]i = 0
While i < 3
i = i + 1
Wend
Msgbox i
[/code]
Ablauf ist:
i ist 0 also kleiner 3
deshalb wird 1 addiert und zurückgesprungen
i ist jetzt 1 also noch kleiner 3
deshalb wird 1 addiert und zurückgesprungen
i ist jetzt 2 also noch kleiner 3
deshalb wird 1 addiert und zurückgesprungen
i ist jetzt 3 also nicht mehr kleiner 3
deshalb wird zur Zeile Msgbox i gesprungen und damit 3 angezeigt
[code]i = 0
While i > 3
i = i + 1
Wend
Msgbox i
[/code]
Ablauf ist:
i ist 0 also kleiner 3
deshalb wird sofort zur Zeile Msgbox i gesprungen und damit 0 angezeigt
Eine solche Schleife muss normalerweise immer Befehle enthalten die den zu prüfenden Wert irgendwie ändern, denn sonst besteht die Gefahr das sich das Makro in der Schleife fängt, d.h. die Schleife wird ewig wiederholt, z.B.:
[code]i = 0
While i < 3
i = 1
Wend
Msgbox i
[/code]
Reicht das?
Gruß
Stephan