1. 程式人生 > >VBA-迴圈語句之For Each..Next

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小結與例項***

---------------------------------------------------------------------------------------------------------------------------------- For...Next 語句 以指定次數來重複執行一組語句 語法: For 計數變數 = 初始值 To 終止值 [Step 步長值] [執行的一條或多條語句] [Exit 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