VB的For…Next循環語句


當你知道你需要重復運行多少次某段語句時,可以使用For…Next語句。它的語法如下:

For 計數器 = 開始 To 結束 [步長]
語句1
語句2
語句N
Next [計數器]

括號里面的代碼是可選的。計數器是個儲存反復次數的數字型變量,開始是你期望的起始計數點,結束則表明循環應該執行多少次。

 

例如,你想要重復執行循環里的語句5次,使用下述For語句:

For counter = 1 To 5

你的語句

Next

當VB遇到關鍵字Next時,它將回到循環的開始處,並且再次執行循環里面的代碼,直到計數器到達結束值。一旦計數器的值大於關鍵字To后面的數值,VB就會跳出循環。因為計數器變量在每次執行循環后會自動地變化,它早晚會超出結束的值。每次VB執行循環里的語句后,變量計數器的值會默認地增加1,你可以使用Step語句來改變這個默認設置。例如,要使計數器每次增加3,就可以使用以下語句:

For counter = 1 To 5 Step 3

你的代碼

Next counter

當VB遇到上面的語句,它會執行循環里的語句兩次。在第一次的循環里,counter等於1,第二次則等於4(3+1)。在執行兩次循環后,counter就等於7(4+3),這導致VB退出該循環。

 

注意,步長(Step)是可選的。可選語句總是顯示則方括號里面(參加本段開頭部分的語法)。步長不需要明確,除非它不等於1。你可以在Step后面放個負值作為步長,那么VB每次遇到關鍵字Next后都會將計數器減小。

 

關鍵字Next后面的變量名稱(counter)也是可選的,然而,好的編程習慣是要強制在關鍵字Next后面加上計數器。

 

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

 

1.  在VB窗口,在當前工程里插入一個模塊並且命名為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界面,並且准備下述表格:

 

For…Next循環

 

4.  運行過程DeleteZeroRows。
我們來一行接一行地檢查一下過程DeleteZeroRows。開始兩語句計算當前區域的總行數,並且將該值儲存於變量totalR,接下來,VB選擇單元格B2然后遇到關鍵字For。因為電子表格的第一行包含了列標題,所以要從總行數里減掉1(totalR-1)。

 

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

 

VB每完成一次循環,它就跳到關鍵字For來比較r的值和totalR-1的值。當過程結束后,銷售表里就不會包含沒有銷售的產品了。


技巧: 成對語句
For和Next必須是成對的,如果有一個漏掉了,VB就將產生一個錯誤信息“For沒有Next”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM