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