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.
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:
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!“
Entdecke mehr von Clevercalcul
Subscribe to get the latest posts sent to your email.