一,、For...Next循環(huán)
For...Next循環(huán)在事件過程中重復(fù)執(zhí)行指定的一組語句,,直到達(dá)到指定的執(zhí)行次數(shù)為止。當(dāng)要執(zhí)行幾個相關(guān)的運(yùn)算,、操作屏幕上的多個元素或者處理幾段用戶輸入時,,這種方法就十分有用了。For...Next循環(huán)實際上是一大串程序語句的一種簡略寫法,,由于這一長串語句中的每一組語句都完成相同的任務(wù),,Visual Basic只定義其中的一組語句并按照程序的需要重復(fù)執(zhí)行這組語句,直至達(dá)到規(guī)定的次數(shù),。For...Next循環(huán)的語法如下所示:
For Variable=start To end
statements
Next[variable]
上述語法中,,“For”、“To”,、“Next”是必須的關(guān)鍵字,,等號(=)也不能省略。“variable”是數(shù)值型變量的名稱,,它記錄了當(dāng)前的循環(huán)次數(shù),,這個變量用你程序中需要的數(shù)值型變量來代替,。“start”和“end”是兩個數(shù)值,表示循環(huán)的初值和終值,,你也需要使用程序中所需的相應(yīng)值來代替它們,。“For”和“Next”之間的一條或多條語句是該循環(huán)將重復(fù)執(zhí)行的語句。例如,,下面的For...Next循環(huán)在程序運(yùn)行時計算機(jī)揚(yáng)聲器快速響鈴四聲:
For i=1 To 4
Beep
Next
上面的循環(huán)與過程中重復(fù)書寫4條Beep語句是等價的,。對編譯器來說,上述循環(huán)相當(dāng)于:
Beep
Beep
Beep
Beep
上面的循環(huán)中使用的變量是字母“i”,,這是個習(xí)慣用法,,它表示For...Next循環(huán)中的整型計數(shù)器。循環(huán)每執(zhí)行一次,,該計數(shù)器變量增加1(第一次執(zhí)行循環(huán)時,,該變量的值為1,也就是“start”指定的初值:最后一次執(zhí)行循環(huán)時,,該變量的值為4,,也就是“end”指定的終值)。
二,、Do循環(huán)
程序中除了使用For...Next循環(huán)外,也可以使用Do循環(huán)重復(fù)執(zhí)行一組語句,,直到某個條件為“True”時終止循環(huán),。對于事先不知道循環(huán)要執(zhí)行多少次的情況來說,Do循環(huán)十分有用和方便,。例如,,你要求用戶向數(shù)據(jù)庫中輸入姓名,直到用戶在輸入框中輸入單詞“Done”時終止輸入,。這時,,你可以使用Do語句來構(gòu)造一個無窮循環(huán),當(dāng)用戶輸入字符串“Done”時退出循環(huán),。根據(jù)循環(huán)條件的放置位置以及計算方式,,Do循環(huán)有幾種格式,其中常用的語法格式為:
Do [{While|Until} condition]
statements
[Exit Do]
Loop
或
Do
statements
[Exit Do]
statements
Loop [{While|Until} condition]
如果條件為“Null”,,則這個條件被認(rèn)為是“False”,。例如,下面的“Do”循環(huán)重復(fù)處理用戶輸入,,直到用戶鍵入單詞“Done”時為止,。
Do While InpName<>"Done"
inpName=InputBox("Enter your name or type Done to quit.")
If inpName<>"Done" Then
Label1.Text=inpName
End If
Loop
注意:測試條件的放置位置影響Do循環(huán)的執(zhí)行方式。這個循環(huán)中的條件是InpName<>"Done",,Visual Basic編譯器把這個條件翻譯成“只要InpName變量的值不等于單詞“Done”,就一直執(zhí)行該循環(huán)語句”,。這表明:當(dāng)Do循環(huán)第一次執(zhí)行時,,如果循環(huán)項部的條件值不是True,那么Do循環(huán)中的語句就不會執(zhí)行,。對上面的示例來說,,如果在循環(huán)開始執(zhí)行之前(可能在事件過程中使用某個賦值語句進(jìn)行賦值),InpName變量的值等于字符串“Done”,那么Visual Basic將跳過整個循環(huán)體,,并在Loop語句后面的語句繼續(xù)執(zhí)行,。需要注意的是,這種格式的Do循環(huán)需要在循環(huán)體中寫上一條If...Then語句,,以避免用戶鍵入的退出值顯示出來,。如果希望程序中的循環(huán)體至少執(zhí)行一次,那么把條件放置在循環(huán)的尾部,,例如:
Do Until InpName=InputBox("Enter your name or type Done to quit.")
If InpName<>"Done" Then
Label1.Text=InpName
Loop While InpName<>"Done"
這個循環(huán)與前面介紹的Do循環(huán)相似,,但是,這里的循環(huán)條件在接收了InputBox函數(shù)中的姓名后進(jìn)行測試,。這種循環(huán)方式的優(yōu)點是在測試循環(huán)條件前更新變量InpName的值,,這樣,即使InpName在進(jìn)入循環(huán)前的值為“Done”,,也不會直接退出循環(huán),。在循環(huán)的尾部測試條件保證了循環(huán)體至少執(zhí)行一次,但是,,一般來說,,這種格式的循環(huán)體中往往要增加一些額外的數(shù)據(jù)處理語句。
三,、While循環(huán)
While循環(huán)執(zhí)行到給定的條件為True才終止循環(huán),,與Do While相似。Whiel循環(huán)的語法為:
While condition
statements
[Exit While]
statemenst
End While
如果條件為Null,,則這個條件被認(rèn)為是False,,如果條件為True,則所有的語句將被執(zhí)行,,直到End While,,這時候控制權(quán)返還給While,condition再次被檢查,,如果condition為True,則繼續(xù)執(zhí)行While內(nèi)部的語句,,如果condition為False,則繼續(xù)執(zhí)行End While后面的語句,。下例將說明While循環(huán)的用法:
Dim Check As Boolean=True
Dim counter As Integer=0
Do 外層循環(huán)
While Counter<20
Counter+=1 計數(shù)器加一
If Counter=20 Then
Check=False
Exit While 退出內(nèi)層循環(huán)
End If
End While
Loop Until Check 退出外層循環(huán)
四,、For Each...Next循環(huán)
For Each...Next循環(huán)與For...Next循環(huán)類似,但它對數(shù)組或?qū)ο蠹现械拿恳粋€元素重復(fù)一組語句,,而不是重復(fù)語句一定的次數(shù),。如果不知道一個集合有多少元素,,F(xiàn)or Each...Next循環(huán)非常有用。For Each...Next循環(huán)的語法如下:
For Each element in group
statements
Next element
例如,,下面的例子利用For Each...Next循環(huán)來查找所有元素的Text屬性是否為“Hello”:
Dim Found As Boolean
Dim MyObject,MyCollection As Object
For Each MyObject In MyCollection
If MyObject.Text="Hello" Then
Found=True
Exit For
End If
Next
使用For Each...Next循環(huán)時的兩點說明:
1.對于集合或數(shù)組中的元素,,element既可以是普通的Object類型,也可以是特殊的Object對象,。
2.group可以是數(shù)組,,也可以是一個集合。