循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)允許重復(fù)執(zhí)行一行或數(shù)行代碼。VisualBasic支持的循環(huán)結(jié)構(gòu)有:
1.Do...Loop
2.For...Next
3.ForEach...Next
Do...Loop
用Do循環(huán)重復(fù)執(zhí)行一語句塊,且重復(fù)次數(shù)不定。Do...Loop語句有幾種演變形式,但每種都計(jì)算數(shù)值條件以決定是否繼續(xù)執(zhí)行。如同If...Thencondition必須是一個(gè)數(shù)值或者值為True(非零)或False(零)的表達(dá)式。在下面的Do...Loop循環(huán)中,只要condition為True就執(zhí)行statements。
DoWhilecondition
statements
Loop
當(dāng)VisualBasic執(zhí)行這個(gè)Do循環(huán)時(shí)會首先測試condition。如果condition為False(零),則跳過所有語句。如果condition為True(非零),則VisualBasic執(zhí)行語句,然后退回到DoWhile語句再測試條件。
因此,只要condition為True或非零,循環(huán)可以隨意執(zhí)行多少次。如果condition一開始便為False,則不會執(zhí)行語句。例如,以下過程將計(jì)算某一目標(biāo)字符串在另一字符串中出現(xiàn)的次數(shù),只要發(fā)現(xiàn)目標(biāo)串就執(zhí)行循環(huán):
FunctionCountStrings(longstring,target)
Dimposition,count
position=1
DoWhileInStr(position,longstring,target)
position=InStr(position,longstring,target)_
1
count=count 1
Loop
CountStrings=count
EndFunction
如果目標(biāo)字符串未出現(xiàn)在另一個(gè)字符串中,則InStr返回0,而且不再執(zhí)行循環(huán)。
Do...Loop語句的另一種演變形式是先執(zhí)行語句,然后在每次執(zhí)行后測試condition。這種形式保證statements至少執(zhí)行一次:
Do
statements
LoopWhilecondition
其它兩種演變形式類似于前兩個(gè),所不同的是,只要condition為False而不是True,它們就執(zhí)行循環(huán)。
For...Next000
在不知道循環(huán)內(nèi)需要執(zhí)行多少次語句時(shí),宜用Do循環(huán)。但是,在知道要執(zhí)行多少次時(shí),則最好使用For...Next循環(huán)。與Do循環(huán)不同,F(xiàn)or循環(huán)使用一個(gè)叫做計(jì)數(shù)器的變量,每重復(fù)一次循環(huán)之后,計(jì)數(shù)器變量的值就會增加或者減少。For循環(huán)的語法如下:
Forcounter=startToend[Stepincrement]
statements
Next[counter]
參數(shù)Counter、Start、end和increment都是數(shù)值型的。
注意increment參數(shù)可正可負(fù)。如果increment為正,則Start必須小于等于end,否則不能執(zhí)行循環(huán)內(nèi)的語句。如果increment為負(fù),則Start必須大于等于end,這樣才能執(zhí)行循環(huán)體。如果沒有設(shè)置Step,則increment缺省值為1。
在執(zhí)行For循環(huán)時(shí),VisualBasic
1.設(shè)置counter等于start。
2.測試counter是否大于end。若是的話,則VisualBasic退出循環(huán)。(若increment為負(fù),則VisualBasic測試counter是否小于end。)
3.執(zhí)行語句。
4.counter增加一,或者增加increment(如果已指定的話)。
5.重復(fù)步驟2到步驟4。
以下代碼打印出所有有效的屏幕字體名:
EndIf
NextPFont
NextSFont
EndSub
新聞熱點(diǎn)
疑難解答
圖片精選