這里,簡要地談談有限次的循環結構,也就是For-Next循環。還是先看一個例子。
我們如果想要在工作表單元格區域A1:A10中依次填寫數字1至10,可以使用下面的代碼:
Sub ForNextTest1()
Dim i As Integer ‘聲明整型變量i
‘使用循環為單元格填充數字
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub
運行后,當前工作表中單元格區域A1:A10會填充數字1至10。上述代碼中,Cells(i, 1)代表第i行第1列的單元格,語句Cells(i, 1) = i將i的值放入第i行第1列的單元格中。
For-Next循環的基本語法結構如下:
For 計數變量=開始值 To 結束值 [step 步長]
[語句塊]
[Exit For]
[語句塊]
Next [計數變量]
說明:
按照慣例,方括號中的內容表示可選項。
步長可以是正值或者負值。正確地設置某個值,以滿足特定的需求;若不設置,默認循環計數變量每次增加1,如上面的例子所示。
Exit For語句表示提前退出循環。
For-Next循環從計數變量設置的開始值開始,按步長增加計數變量值,直至達到結束值時終止循環。
將前面示例中的循環用框圖表示如下:
下面的代碼求1至100的和,并顯示結果。
Sub ForNextTest2()
Dim sum As Integer ‘聲明存儲結果值的變量
Dim i As Integer ‘聲明計數變量
sum = 0 ‘賦初值
For i = 1 To 100
sum = sum + i
Next i
MsgBox “1至100的和為:”& sum
End Sub
下面的代碼求1至100之間的偶數和并顯示結果。
Sub ForNextTest3()
Dim sum As Integer ‘聲明存儲結果值的變量
Dim i As Integer ‘聲明計數變量
sum = 0 ‘賦初值
For i = 0 To 100 Step 2
sum = sum + i
Next i
MsgBox “1至100之間的偶數和為:”& sum
End Sub
其中,計數變量i的值從0開始,依次為2、4、6、8等,最后達到100。但是,在循環結束時,i的值為102。有興趣的朋友可以添加一個語句,打印出循環結束后i的值。
我們使計數變量從100開始,讓步長為負值遞減,也可以得到同樣的效果:
Sub ForNextTest4()
Dim sum As Integer ‘聲明存儲結果值的變量
Dim i As Integer ‘聲明計數變量
sum = 0 ‘賦初值
For i = 100 To 0 Step -2
sum = sum + i
Next i
MsgBox “1至100之間的偶數和為:”& sum
End Sub
For-Next循環可以嵌套其他的For-Next循環。如下例所示,將當前工作表中的單元格區域A1:J10中的內容都填充為數字1。
Sub ForNextTest5()
Dim i As Integer ‘聲明計數變量
Dim j As Integer ‘聲明計數變量
For i = 1 To 10
For j = 1 To 10
Cells(i, j).Value = 1 ‘填充單元格
Next j
Next i
End Sub
下面的例子說明使用Exit For語句退出循環:
Sub ForNextTest6()
Dim i As Integer ‘聲明計數變量
For i = 1 To 10
If Cells(i, 1).Value = 0 Then ‘判斷單元格中的值為0
Exit For
End If
Next i
MsgBox “單元格A” & i& “中的值為0.”
End Sub
在單元格區域A1:A10中,如果某個單元格的值為0,則退出循環,并繼續執行Next后面的語句,本例中是MsgBox函數。