下面繼續(xù)介紹在滿足指定的條件時才執(zhí)行相應(yīng)代碼塊的循環(huán)結(jié)構(gòu),接著來看看Do Until循環(huán)。
Do Until循環(huán)與Do While循環(huán)的結(jié)構(gòu)相似,最本質(zhì)的區(qū)別在于循環(huán)條件的判斷。顧名思義,在Do While循環(huán)中,當(dāng)條件為真(True)時,就執(zhí)行循環(huán);而在Do Until循環(huán)中,執(zhí)行循環(huán)直到條件為真(True)時,退出循環(huán)。
Do Until循環(huán)的基本語法結(jié)構(gòu)如下:
Do [Until 條件語句]
[語句塊]
[Exit Do]
[語句塊]
Loop
或者:
Do
[語句塊]
[Exit Do]
[語句塊]
Loop [Until 條件語句]
說明:
按照慣例,方括號中的內(nèi)容表示可選項。
條件語句可以放在循環(huán)的開始處或者結(jié)尾處。如果放在開始處,那么先評估條件,若不滿足條件要求,就執(zhí)行循環(huán)里面的語句;這種情況下,當(dāng)始終滿足條件時,就有可能一次也不會執(zhí)行循環(huán)里面的語句。如果放在結(jié)尾處,則至少會執(zhí)行一次循環(huán)里面的語句。
Exit Do語句表示提前退出循環(huán)。
用框圖分別表示Do Until循環(huán)的兩種語法形式如下:
與上一篇文章介紹的Do While循環(huán)相比較,結(jié)構(gòu)一樣,只是執(zhí)行循環(huán)的條件相反。
接下來,為方便對兩種循環(huán)結(jié)構(gòu)的理解,我們改寫上一篇文章中的部分示例。
示例1:如果想要在工作表單元格區(qū)域A1:A10中依次填寫數(shù)字1至10,也可以使用下面的包含Do Until循環(huán)的代碼:
Sub DoUntil1()
Dim i As Integer ‘聲明變量
i = 1 ‘給變量賦初始值
‘循環(huán)
Do Until i > 10
Cells(i, 1).Value = i
i = i + 1
Loop
End Sub
注意,與For-Next循環(huán)不同的是,在進(jìn)入循環(huán)之前,需要先給變量i賦初始值。在循環(huán)中,還需要能夠增加變量的值。
示例2:下面的代碼使用Do Until循環(huán)求1至100的和,并顯示結(jié)果。
Sub DoUntil2()
‘聲明變量
Dim i As Integer
Dim sum As Integer
‘給變量賦初值
i = 1
sum = 0
‘循環(huán)并顯示結(jié)果
Do Until i > 100
sum = sum + i
i = i + 1
Loop
MsgBox “1至100的和為:”& sum
End Sub
示例3:下面的代碼使用Do Until循環(huán)求1至100之間的偶數(shù)和并顯示結(jié)果。
Sub DoUntil3()
‘聲明變量
Dim i As Integer
Dim sum As Integer
‘給變量賦初值
i = 1
sum = 0
‘循環(huán)并顯示結(jié)果
Do Until i > 100
If (i Mod 2 = 0) Then
sum = sum + i
End If
i = i + 1
Loop
MsgBox “1至100的和為:”& sum
End Sub