Die Do-While-Schleife in VBA

DoWhile2

Das heutige Thema ist die Do-While-Schleife. Diese Schleifenart ähnelt in gewissem Sinne der Do-Loop-Schleife, denn zu Beginn des Makros steht auch hier nicht fest, wieviel Durchläufe erforderlich sind.

Um keine Endlosschleifen zu erzeugen, müssen auch bei der Do-While-Schleife Bedingungen gesetzt werden. Das Befehlswort dafür ist hier While. Das Befehlswort kann sowohl hinter Do als auch hinter Loop die Bedingungen einleiten.

Die Do-While-Schleife tut etwas, solange die Bedingung WAHR ist. Sie ist damit so etwas wie eine logische Funktion, die auf WAHR oder FALSCH basiert.

Es gibt nun zwei Möglichkeiten. Entweder steht der Befehl While unmittelbar hinter Do oder While steht weiter unten im Makro hinter Loop.

Gleich ein Beispiel, While steht am Anfang, hinter Do: In einer Do-While-Schleife soll eine Namensliste abwärts geprüft werden bis der Name “Harry” erreicht ist.

DoWhile1

Du gehst wieder in den VBA-Editor (mit Alt+F11) und suchst ein Modul auf. Nun schreibst Du z.B. dieses kleine Makro:

Sub DoWhile1()

Dim intRow As Integer

intRow=270

Do While Cells(intRow,7).Value<>”Harry”

intRow=intRow+1

Loop

MsgBox (“Suchbegriff wurde in Zelle ” & Cells(intRow,7).Address & ” gefunden!”)

End Sub

Die MsgBox wirft richtig die Meldung “Suchbegriff wurde in Zelle $G$277 gefunden!” aus.

Im nächsten Beispiel, While steht am Ende, hinter Loop, soll die Schleife ausgeführt werden, solange in der Namensliste nicht der Name Lars erreicht ist. Eine MsgBox teilt mit, dass bis Zelle … der Name Lars nicht gefunden wurde.

Dies ist die Liste:

DoWhile2

Und so sieht das Makro aus:

Sub DoWhile2()

Dim intRow As Integer

intRow=287

Do

intRow=intRow+1

Loop While Cells(intRow,7).Value <>”Lars”

MsgBox (“Bis Zelle ” & Cells(intRow-1,7).Address & ” wurde der Name Lars nicht gefunden!”)

End Sub

Die Mitteilung der MsgBox lautet: “Bis Zelle $G$295 wurde der Name Lars nicht gefunden!“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

WordPress Cookie Plugin von Real Cookie Banner