一、Do...Loop 語句
當條件為 True 時,或直到條件變為 True 時,重復執行一個語句塊中的命令。
語法
Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop
或者可以使用下面這種語法:
Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]
Do Loop 語句的語法具有以下幾個部分:
部分 | 描述 |
---|---|
condition | 可選參數。數值表達式或字符串表達式,其值為 True 或 False。如果 condition 是 Null,則 condition 會被當作 False。 |
statements | 一條或多條命令,它們將被重復當或直到 condition 為 True。 |
說明
在 Do...Loop 中可以在任何位置放置任意個數的 Exit Do 語句,隨時跳出 Do...Loop 循環。Exit Do 通常用於條件判斷之后,例如 If...Then,在這種情況下,Exit Do 語句將控制權轉移到緊接在 Loop 命令之后的語句。
如果 Exit Do 使用在嵌套的 Do...Loop 語句中,則 Exit Do 會將控制權轉移到 Exit Do 所在位置的外層循環。
Do...Loop 語句示例
本示例示范如何使用 Do...Loop 語句。內層的 Do...Loop 語句循環到第 10 次時將標志值設置為 False,並用 Exit Do 語句強制退出內層循環。外層循環則在檢查到標志值為 False 時,馬上退出。
Dim Check, Counter Check = True: Counter = 0 '
設置變量初始值。Do '
外層循環。Do While Counter < 20
'
內層循環。Counter = Counter + 1 '
計數器加一。If Counter = 10 Then '
如果條件成立。Check = False '
將標志值設成False
。Exit Do
'
退出內層循環。End If
Loop
Loop Until Check = False '
退出外層循環。
二、While...Wend 語句
只要指定的條件為 True,則會重復執行一系列的語句。
語法
While condition
[statements]
Wend
While...Wend 語句的語法具有以下幾個部分:
部分 | 描述 |
---|---|
condition | 必要參數。數值表達式或字符串表達式,其計算結果為 True 或 False。如果 condition 為 Null,則 condition 會視為 False。 |
statements | 可選參數。一條或多條語句,當條件為 True 時執行。 |
說明
如果 condition 為 True,則所有的 statements 都會執行,一直執行到 Wend 語句。然后再回到 While 語句,並再一次檢查 condition,如果 condition 還是為 True,則重復執行。如果不為 True,則程序會從 Wend 語句之后的語句繼續執行。
While...Wend 循環也可以是多層的嵌套結構。每個 Wend 匹配最近的 While 語句。
提示 Do...Loop 語句提供了一種結構化與適應性更強的方法來執行循環。
While...Wend 語句示例
本示例使用 While...Wend 語句來增加計數變量的值。如果條件判斷值為 True,則循環內的語句將一直執行下去。
Dim Counter Counter = 0 '
設置變量初值。While Counter < 20 '
測試計數器的值。Counter = Counter + 1 '
將計數器的值加一。Wend '
當Counter > 19
時則循環終止。Debug.Print Counter '
在“立即”窗口中顯示數字20
。
三、For...Next 語句
以指定次數來重復執行一組語句。
語法
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next [counter]
For Next 語句的語法具有以下幾個部分:
部分 | 描述 |
---|---|
counter | 必要參數。用做循環計數器的數值變量。這個變量不能是 Boolean 或數組元素。 |
start | 必要參數。counter 的初值。 |
End | 必要參數,counter 的終值。 |
Step | 可選參數。counter 的步長。如果沒有指定,則 step 的缺省值為 1。 |
Statements | 可選參數。放在 For 和 Next 之間的一條或多條語句,它們將被執行指定的次數。 |
說明
step 參數可以是正數或負數。step 參數值決定循環的執行情況,如下所示:
值 | 循環執行,如果 |
---|---|
正數或 0 | counter <= end |
負數 | counter >= end |
當所有循環中的語句都執行后,step 的值會加到 counter 中。此時,循環中的語句可能會再次執行(基於循環開始執行時同樣的測試),也可能是退出循環並從 Next 語句之后的語句繼續執行。
提示 在循環中改變 counter 的值,將會使程序代碼的閱讀和調試變得更加困難。
循環中可以在任何位置放置任意個 Exit For 語句,隨時退出循環。 Exit For經常在條件判斷之后使用,例如 If...Then,並將控制權轉移到緊接在 Next 之后的語句。
可以將一個 For...Next 循環放置在另一個 For...Next 循環中,組成嵌套循環。不過在每個循環中的 counter 要使用不同的變量名。下面的體系結構是正確的:
For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 ...
Next K
Next J
Next I
注意 如果省略 Next 語句中的 counter,就像 counter 存在時一樣執行。但如果 Next 語句在它相對應的 For 語句之前出現,則會產生錯誤。
For...Next 語句示例
本示例使用 For...Next 語句創建一個字符串,其內容為由 0 到 9 的十個數字所組成的字符串,每個字符串之間用空格隔開。外層循環使用一個變量當作循環計數器,每循環一次,變量值減一。
Dim Words, Chars, MyString For Words = 10 To 1 Step -1 '
建立10
次循環。For Chars = 0 To 9 '
建立10
次循環。MyString = MyString & Chars '
將數字添加到字符串中。Next Chars ' Increment counter
MyString = MyString & " " '
添加一個空格。Next Words