VBA-迴圈語句之For Each..Next
宣告:筆記來源於我要自學網-《Excel VBA基礎教程》-授課講師:曾賢志
當需要處理集合成員時,一般會用 For Each...Next,實際上就是處理物件
例項應用:判斷是否等於“A1”是就填充底色為紅色
Sub foreachnext迴圈1() Dim rng As Range, n! For Each rng In Sheet1.Range("a2:a10") '取a2:a10中的每個單元格 If rng = "A1" Then rng.Interior.ColorIndex = 3 '判斷取的每個單元格值是否等於A1,等於就給單元格底色填充為3(紅色) Next End Sub
例項應用:取出當前工作簿的工作表名
Sub foreachnext迴圈2()
Dim wsh As Worksheet, n As Byte, m As String
For Each wsh In Worksheets '取當前工作表集合中的每個成員
n = n + 1
m = wsh.Name '最後這兩行程式碼,可以合成:Sheet1.Cells(n, 3) =wsh.Name
Sheet1.Cells(n, 3) = m
Next
End Sub
For...Next也是迴圈語句,與Do...Loop不同之處在於,For Next 有一個內建的計數器
Sub fornext迴圈2()
Dim i!, j!
For i = 1 To 100 '可在後面加上 step 1 即步長值(預設就是step,所以可以忽略不寫)
j = j + i
Next
MsgBox j
End Sub
例項應用:對D列進行金額計算
Sub fornext迴圈例項()
Dim rng!
For rng = 2 To 16 '從2行迴圈到16行
Sheet1.Cells(rng, 4) = Sheet1.Cells(rng, 2) * Sheet1.Cells(rng, 3)
Next
End Sub
***For...Next小結與例項***
1.迴圈中可以在任何位置放置任意一個Exit For 語句,隨時退出迴圈。 2.Exit For 與 If...Then 經常一起使用,目的是:找到符合條件後,跳出迴圈,而不必再進行不必要的迴圈。
例子:根據表格中的資料,統計出2班的人數
Sub test()
For i = 1 To 16
If Cells(i, 1) = "2班" Then Exit For '找到2班的起始位置
Next i
For j = 1 To 16
If Cells(j, 1) = "3班" Then Exit For '找到3班起始位置
Next j
MsgBox "2班的人數為:" & j - i '3班起始位置行號-2班起始位置行號
End Sub
3.可以將一個 For...Next 迴圈放置在另一個 For...Next 迴圈中,組成巢狀迴圈。 For i = 1 To 10 For j = 1 To 10 For k = 1 To 10 ......... Next k Next j Next i
例子:理解計數變數的執行
Sub 理解計數變數的執行()
For i = 1 To 2
For j = 1 To 3
k = "外層的第" & i & "次的,內層的第" & j & "次"
Next j
Next i
End Sub
例項應用:製作九九乘法表(如圖)
Sub 九九乘法表製作()
Dim a!, b!
For a = 1 To 9
For b = 1 To 9
If b > a Then
Sheet1.Cells(a, b) = ""
Else
Sheet1.Cells(a, b) = a & "x" & b & "=" & a * b
End If
Next
Next
End Sub