VB的For…Next循環(huán)語句

2021-12-08 14:29 更新
當(dāng)你知道你需要重復(fù)運(yùn)行多少次某段語句時(shí),可以使用For…Next語句。它的語法如下:
For 計(jì)數(shù)器 = 開始 To 結(jié)束 [步長(zhǎng)]
語句1
語句2
語句N
Next [計(jì)數(shù)器]

括號(hào)里面的代碼是可選的。計(jì)數(shù)器是個(gè)儲(chǔ)存反復(fù)次數(shù)的數(shù)字型變量,開始是你期望的起始計(jì)數(shù)點(diǎn),結(jié)束則表明循環(huán)應(yīng)該執(zhí)行多少次。


例如,你想要重復(fù)執(zhí)行循環(huán)里的語句5次,使用下述For語句:

For counter = 1 To 5
你的語句
Next

當(dāng)VB遇到關(guān)鍵字Next時(shí),它將回到循環(huán)的開始處,并且再次執(zhí)行循環(huán)里面的代碼,直到計(jì)數(shù)器到達(dá)結(jié)束值。一旦計(jì)數(shù)器的值大于關(guān)鍵字To后面的數(shù)值,VB就會(huì)跳出循環(huán)。因?yàn)橛?jì)數(shù)器變量在每次執(zhí)行循環(huán)后會(huì)自動(dòng)地變化,它早晚會(huì)超出結(jié)束的值。每次VB執(zhí)行循環(huán)里的語句后,變量計(jì)數(shù)器的值會(huì)默認(rèn)地增加1,你可以使用Step語句來改變這個(gè)默認(rèn)設(shè)置。例如,要使計(jì)數(shù)器每次增加3,就可以使用以下語句:

For counter = 1 To 5 Step 3
你的代碼
Next counter

當(dāng)VB遇到上面的語句,它會(huì)執(zhí)行循環(huán)里的語句兩次。在第一次的循環(huán)里,counter等于1,第二次則等于4(3+1)。在執(zhí)行兩次循環(huán)后,counter就等于7(4+3),這導(dǎo)致VB退出該循環(huán)。


注意,步長(zhǎng)(Step)是可選的??蛇x語句總是顯示則方括號(hào)里面(參加本段開頭部分的語法)。步長(zhǎng)不需要明確,除非它不等于1。你可以在Step后面放個(gè)負(fù)值作為步長(zhǎng),那么VB每次遇到關(guān)鍵字Next后都會(huì)將計(jì)數(shù)器減小。


關(guān)鍵字Next后面的變量名稱(counter)也是可選的,然而,好的編程習(xí)慣是要強(qiáng)制在關(guān)鍵字Next后面加上計(jì)數(shù)器。


如何將For…Next循環(huán)使用在Excel里面呢?假使你只想要在你的銷售報(bào)告里面包括某幾個(gè)特定月份的產(chǎn)品銷售,當(dāng)你從Access導(dǎo)入數(shù)據(jù)時(shí),你同樣也會(huì)將那些銷售額為0的數(shù)據(jù)行一起導(dǎo)入。你如何快速取出數(shù)據(jù)為0的行呢?盡管,有很多種方法可以解決這個(gè)問題,但是,我們來看看如何使用For…Next循環(huán)來處理這個(gè)問題吧。


1.  在VB窗口,在當(dāng)前工程里插入一個(gè)模塊并且命名為ForNextLoop
2.  在ForNextLoop模塊里輸入下列過程:
Sub DeleteZeroRows()
Dim totalR As Integer
Dim r As Integer
Range("A1").CurrentRegion.Select
totalR = Selection.Rows.Count
Range("B2").Select
For r = 1 To totalR-1
If ActiveCell = 0 Then
Selection.EntireRow.Delete
totalR = totalR – 1
Else
ActiveCell.Offset(1, 0).Select
End If
Next r
End Sub

3.  切換到Excel界面,并且準(zhǔn)備下述表格:


For…Next循環(huán)


4.  運(yùn)行過程DeleteZeroRows。
我們來一行接一行地檢查一下過程DeleteZeroRows。開始兩語句計(jì)算當(dāng)前區(qū)域的總行數(shù),并且將該值儲(chǔ)存于變量totalR,接下來,VB選擇單元格B2然后遇到關(guān)鍵字For。因?yàn)殡娮颖砀竦牡谝恍邪?/span>了列標(biāo)題,所以要從總行數(shù)里減掉1(totalR-1)。


VB將需要執(zhí)行循環(huán)里面的指令6次。嵌套在循環(huán)里面的條件語句(If…Then…Else)告訴VB根據(jù)當(dāng)前活動(dòng)單元格的值作出決定。如果該值為0,VB就刪除當(dāng)前行,并且將總行數(shù)減掉1。否則,條件為假,因此,VB將選擇下一行的單元格。


VB每完成一次循環(huán),它就跳到關(guān)鍵字For來比較r的值和totalR-1的值。當(dāng)過程結(jié)束后,銷售表里就不會(huì)包含沒有銷售的產(chǎn)品了。


技巧: 成對(duì)語句
For和Next必須是成對(duì)的,如果有一個(gè)漏掉了,VB就將產(chǎn)生一個(gè)錯(cuò)誤信息“For沒有Next”


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)