Excel KnowHow / Visual Basic (VBA) 4 Schleifen -= Entstanden unter Excel 2003 =- Die erste Schleife habe ich bereits im letzten Kapitel benutzt: Die FOR-Schleife. Schauen wir uns das Beispiel noch einmal an: Sub Modul() 'Zähler als Zahlenvariable definieren Dim zähler As Integer 'Schleife einfügen For zähler = 1 To 5 'Ausgabe im Direktfenster Debug.Print "Zähler: " & zähler & "..." Next zähler Der Aufbau der For-Schleife hat i.d.r. die folgende Syntax: For variable = anfangswert to endwert [step x] Next variable Natürlich können Sie auch für anfangswert und endwert Variablen einsetzen (Wenn also der Anzahl der Durchläufe sich durch eine Berechnung ergibt). Der optionale Teil step x kann genutzt werden, wenn Sie die Schleife z.b. rückwärts -also vom größten zu kleinsten Wert- durchlaufen lassen wollen, oder wenn Sie nicht in +1-Schritten vorgehen wollen. Mit dem optionalen Exit For kann die Schleife frühzeitig abgebrochen werden. Quelle: http://www.mr-maniac.de/excel Seite 1 von 5
Eine zweite Möglichkeit für den Aufbau der FOR-Schleife ist der folgende: For Each variable In Selektion Next variable Dieser Aufbau mach z.b. dann Sinn, wenn Sie einen Zellbereich markiert haben und einen Befehl auf alle markierten Zellen anwenden wollen. variable müsste dann als Range -Variable definiert werden (Dim variable As Range) Eine weitere Schleife ist die DO UNTIL-Schleife / DO WHILE-Schleife. Hier gibt es zwei Varianten: 1.) Die Bedingung ist im Kopf der Schleife: Syntax: Do {While/Until} Bedingung Loop Sehen wir uns diese Bedingung einmal in einem Beispiel an: Sub DoSchleifeKopf() Dim zaehler As Integer Debug.Print "" Debug.Print "" 'Beginn der Schleife Do While zaehler < 3 zaehler = zaehler + 1 Debug.Print "Zähler: " & zaehler Loop ' der Schleife Debug.Print "" Debug.Print "" Quelle: http://www.mr-maniac.de/excel Seite 2 von 5
Was bewirkt der Code? Zunächst werden zwei Zeilen ausgegeben: "" und darunter "==========" (diese benötige ich gleich zu Demonstrationszwecken). Die Schleife beginnt (der Zähler hat zu diesem Zeitpunkt den Wert 0) Schleifen- Durchlauf Wert Zähler Ausgabe 1 0 1 2 1 2 3 2 3 ENDE 3 --- Nach dem dritten Durchlauf hat zaehler den Wert 3, so dass die Bedingung nicht mehr zutrifft und die Schleife beendet wird. Schließlich werden noch zwei Zeilen ausgegeben: "" und darunter "==========" (ebenfalls zu Demonstrationszwecken). Schauen Sie sich das Ergebnis an: Zähler: 1 Zähler: 2 Zähler: 3 Kommen wir nun du der angekündigten Demonstration: 1) Geben Sie vor der Schleife (also in der Zeile vor dem Kommentar) den folgenden Code ein: zaehler=3 und starten Sie das Modul erneut. => Sie bekommen nun folgendes Ergebnis: In diesem Fall wird die Schleife gar nicht durchlaufen, da die Bedingung bereits am Anfang nicht erfüllt wird. - Dieses ist der wesentliche Unterschied zur zweiten Variante (Bedingung im Fuß der Schleife) - hier wird nämlich erst nach dem ersten Durchlauf geprüft... Quelle: http://www.mr-maniac.de/excel Seite 3 von 5
2.) Die Bedingung ist im Fuß der Schleife: Syntax: Do Loop {While/Until} Bedingung Sehen wir uns diese Bedingung einmal in unserem Beispiel an: (ändern Sie den obigen Code einfach ab): Sub DoSchleifeKopf() Dim zaehler As Integer Debug.Print "" Debug.Print "" zaehler = 0 'Beginn der Schleife Do zaehler = zaehler + 1 Debug.Print "Zähler: " & zaehler Loop While zaehler < 3 ' der Schleife Debug.Print "" Debug.Print "" Das Ergebnis entspricht dem ersten Ergebnis aus der Variante "Bedingung im Kopf". Zähler: 1 Zähler: 2 Zähler: 3 Quelle: http://www.mr-maniac.de/excel Seite 4 von 5
1) Verändern Sie auch hier den Code: zaehler=3 und starten Sie das Modul erneut. => Sie bekommen nun folgendes Ergebnis: Zähler: 4 In diesem Fall wird die Schleife in jedem Fall einmal durchlaufen, auch wenn die Bedingung nicht erfüllt wird. Bei beiden Varianten haben Sie jeweils die Option, die Bedingung entweder mit until oder mit while anzugeben. - while zaehler <3 bedeutet, dass die Schleife solange durchlaufen wird, bis zaehler einen Wert größer oder gleich 3 hat. - until zaehler <3 hingegen bedeutet, dass die Schleife solange durchlaufen wird, bis zaehler einen Wert kleiner 3 annimmt. Quelle: http://www.mr-maniac.de/excel Seite 5 von 5