Do...Loop Statement

Lặp lại những câu lệnh nằm giữa câu lệnh Do (làm) và câu lệnh Loop (vòng lặp) trong khi điều kiện là Đúng, hoặc đên khi điều kiện trở thành Đúng.

Cú pháp

Do [{While | Until} condition = True]

khối câu lệnh

[Exit Do]

khối câu lệnh

Vòng lặp

hoặc

Do

khối câu lệnh

[Exit Do]

khối câu lệnh

Loop [{While | Until} condition = True]

Tham số/Phần tử

Điều_kiện : một biểu thức kiểu so sánh, thuộc số hay chuỗi mà ước tính là hoặc Đúng hoặc Sai.

Khối câu lệnh : những câu lệnh bạn muốn lặp lại trong khi hoặc đến khi điều kiện là Đúng.

Câu lệnh Do...Loop (làm...vòng lặp) thực hiện một vòng lặp miến là, hoặc đến khi một điều kiện nào đó là Đúng. Điều kiện thoát phải được nhập vào phía sau câu lệnh kiểu Do hay Loop. Những mẫu thí dụ theo đây là tổ hợp đúng:

Cú pháp

Do While condition = True

...khối câu lệnh

Vòng lặp

Khối câu lệnh nằm giữa hai câu lệnh Do While (làm trong khi) và Loop (vòng lặp) được lặp lại miễn là điều kiện là Đúng.

Do Until condition = True

...khối câu lệnh

Vòng lặp

Khối câu lệnh nằm giữa hai câu lệnh Do Until (làm đến khi) và Loop (vòng lặp) thì được lặp lại nếu/miễn là điều kiện là Sai.

Do

...khối câu lệnh

Loop While condition = True

Khối câu lệnh nằm giữa hai câu lệnh Do (làm) và Loop (vòng lặp) thì lặp lại miễn là điều kiện là Đúng.

Do

...khối câu lệnh

Loop Until condition = True

Khối câu lệnh nằm giữa hai câu lệnh Do (làm) và Loop (vòng lặp) lặp lại đến khi điều kiện là Đúng.

Hãy dùng câu lệnh Exit Do (thoát làm) để kết thúc tuyệt đối vòng lặp. Bạn có thể thêm câu lệnh này vào bất cứ nơi nào trong một câu lệnh kiểu Do...Loop (làm...vòng lặp). Cũng có thể xác định một điều kiện thoát dùng cấu trúc If...Then (nếu...thì) như theo đây:

Làm...

câu lệnh

If condition = True Then Exit Do

câu lệnh

Vòng lặp...

Ví dụ :

Sub ExampleDoLoop

Dim sFile As String

Dim sPath As String

    sPath = "c:\"

    sFile = Dir$( sPath ,22)

    If sFile <> "" Then

        Do

            MsgBox sFile

            sFile = Dir$

        Loop Until sFile = ""

    End If

End Sub