在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
循环的基本用法和示例。