当需要处理集合成员时,一般会用 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