vba for each

在VBA中,For Each...Next循环结构用于遍历集合或数组中的每个元素,并对每个元素执行一组语句。以下是For Each...Next循环的基本语法和用法:

语法

For Each element In group
    [statements]
[Exit For]
[statements]
Next [element]
  • element:必需,用于循环访问集合或数组中的每个元素。

  • group:必需,表示要遍历的集合或数组的名称。

  • statements:可选,用于对集合中的每个元素执行的一组语句。

示例

以下是一些使用For Each...Next循环的示例:

示例1:遍历工作簿中的所有工作表

Sub ListWorksheets()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        MsgBox ws.Name
    Next ws
End Sub

示例2:遍历工作表中的所有单元格

Sub ListCells()
    Dim cell As Range
    For Each cell In ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
        MsgBox cell.Value
    Next cell
End Sub

示例3:根据用户输入的列数,复制数据到新的工作表

Sub CopyData()
    Dim irow As Long
    Dim l As Integer
    l = InputBox("你要复制数据所在的列数是多少", "输入列数的提示框")
    Application.DisplayAlerts = False
    If Sheets.Count > 1 Then
        For Each sht1 In Sheets
            If sht1.Name = "Sheet1" Then
                sht1.Delete
            End If
        Next
    End If
    irow = Sheet1.Cells(irow, l).End(xlUp).Row
    For i = 2 To irow
        k = 0
        For Each sht In Sheets
            If sht.Name = Sheet1.Cells(i, l).Value Then
                k = 1
            End If
        Next
        If k = 0 Then
            Sheets.Add After:=Sheets(Sheets.Count)
            Sheets(Sheets.Count).Name = Sheet1.Cells(i, l).Value
        End If
    Next
    Application.DisplayAlerts = True
End Sub

注意事项

  • For Each...Next循环在遍历集合时,元素会被自动访问,无需手动控制索引变量。

  • 当需要提前退出循环时,可以使用Exit For语句。

  • 在使用For Each...Next循环时,应确保element变量在使用前已经被声明。

以上就是For Each...Next循环的基本用法和示例。

Top