Instructies Do...Loop

   

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.

Instructies herhalen zolang een voorwaarde True is

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

Instructies herhalen totdat een voorwaarde True wordt

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

Een instructie Do...Loop vanuit de lus verlaten

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.