Khi ta không biết chắc là execution sẽ đi qua loop bao nhiêu lần thì tốt nhất là dùng DO WHILE Loop statement. Khàc với FOR Loop, trong DO WHILE Loop ta phải tự lo initialisation (tức là mới vô đầu i bằng bao nhiêu) và tự lo tăng value của parameter i. Nếu Logical Expression là True thì execute những dòng code từ DO WHILE cho đến Loop. Thí dụ mới vừa qua có thể viết lại bằng cách dùng DO WHILE Loop như sau:
Private Sub cmdWorkOut_Click()
Dim i, Total
WantedTotal = CInt(txtWantedTotal.Text) ' Convert Text string ra internal number b?ng Function
CInt
Total = 0 ' Initialise Total value to zero i = 1 ' Intialise at the first character
Do While (Total < WantedTotal) ' Logical Expression is (Total <
WantedTotal)
Total = Total + i ' Add the number to the Total i = i + 1 ' Increment the vakue of i
Loop
txtActualtotal.Text = CStr(Total) ' Display the Actual Total txtUptonumber.Text = CStr(i - 1) ' Display the highest number
End Sub
TRong khi Total hãy còn nhỏ hơn WantedTotal thì ta tiếp tục đi qua While Loop. Giả dụ ta có các hàng text chứa giá tiền các thứ có thể bỏ vào ổ
bánh mì thịt với giá như sau: Chicken Roll 45c
Roast Beef 55c Tomato Sauce 5c
Bây giờ ta muốn viết code để lấy ra giá tiền từ những hàng Text string như trên. Ta sẽ đi từ bên phải lần lần qua trái cho đến khi tìm được một blank space.
Private Sub WorkOutPrice_Click()
Dim i, TStr, PriceInCents, Price TStr = "Chicken Roll 45c"
i = Len(TStr) ' Starting from the rightmost character of the text string
' Going from right to left, look for the first blank character Do While (Mid(TStr, i, 1) <> " ")
i = i - 1 ' Keep walking to the left Loop
PriceInCents = Mid(TStr, i + 1) ' String including character "c"
' Discard the rightmost character which is "c" and convert the price string to single number
Price = CSng(Left(PriceInCents, Len(PriceInCents) - 1)) txtPrice.Text = CStr(Price) ' Display the highest number
End Sub