Met instructies Do...Loop kunt u een blok met instructies een onbepaald aantal keer herhalen. De instructies worden herhaald zolang een voorwaarde True is of totdat een voorwaarde True wordt.
U kunt het sleutelwoord While op twee manieren gebruiken voor het toetsen van een in een instructie Do...Loop. U kunt de voorwaarde toetsen voordat de lus begint of als de lus tenminste eenmaal is uitgevoerd.
In de volgende procedure ChkFirstWhile
kunt u de voorwaarde toetsen voordat de lus begint. Als MyNum
op 9 in plaats van op 20 wordt ingesteld, worden de instructies binnen de lus nooit uitgevoerd. In de procedure ChkLastWhile
worden de instructies binnen de lus slechts ΘΘn keer uitgevoerd voordat de voorwaarde False wordt.
Sub ChkFirstWhile()
counter = 0
MyNum = 20
Do While MyNum > 10
MyNum = MyNum - 1
counter = counter + 1
Loop
MsgBox "De lus heeft " & counter & " herhalingen gemaakt."
End Sub
Sub ChkLastWhile()
counter = 0
MyNum = 9
Do
MyNum = MyNum - 1
counter = counter + 1
Loop While MyNum > 10
MsgBox "De lus heeft " & counter & " herhalingen gemaakt."
End Sub
U kunt het sleutelwoord Until op twee manieren gebruiken om een voorwaarde in een instructie Do...Loop te toetsen. U kunt de voorwaarde toetsen voordat de lus begint (zoals in de procedure ChkFirstUntil
) of u kunt de voorwaarde toetsen als de lus tenminste ΘΘn keer is uitgevoerd (zoals in de procedure ChkLastUntil
). De lussen worden uitgevoerd zolang de voorwaarde False is.
Sub ChkFirstUntil()
counter = 0
MyNum = 20
Do Until MyNum = 10
MyNum = MyNum - 1
counter = counter + 1
Loop
MsgBox "De lus heeft " & counter & " herhalingen gemaakt."
End Sub
Sub ChkLastUntil()
counter = 0
MyNum = 1
Do
MyNum = MyNum +1
counter = counter + 1
Loop Until MyNum = 10
MsgBox "De lus heeft " & counter & " herhalingen gemaakt."
End Sub
Met behulp van de instructie Exit Do kunt u een Do...Loop verlaten. Als u bijvoorbeeld in een eindeloze lus zit, kunt u deze verlaten via de instructie Exit Do in het instructieblok True van een instructie If...Then...Else of Select Case. Als de voorwaarde False is, gaat de lus gewoon door.
In het volgende voorbeeld wordt aan MyNum
een waarde toegewezen die een eindeloze lus tot gevolg heeft. De instructie If...Then...Else toetst deze voorwaarde en verlaat vervolgens de lus. Op deze manier wordt een eindeloze lus voorkomen.
Sub ExitExample()
counter = 0
MyNum = 9
Do Until MyNum = 10
MyNum = MyNum - 1
counter = counter + 1
If MyNum < 10 Then Exit Do
Loop
MsgBox "De lus heeft " & counter & " herhalingen gemaakt."
End Sub
Opmerking U kunt op ESC of CTRL+BREAK drukken om een eindeloze lus te stoppen.