📅  最后修改于: 2021-01-11 14:16:06             🧑  作者: Mango
For Each循环用于为数组中的每个元素执行一个语句或一组语句。
“ For Each ”循环类似于“ For ”循环。对数组中的每个元素执行此循环。因此,该循环中将不存在步数计数器。它通常与数组一起使用或在文件系统对象的上下文中递归操作。
For Each element In group
[Statement 1]
[Statement 2]
................
................
[Statement n]
[Exit For]
[Statement 11]
[Statement 22]
Next
您可以使用VBA中的“对于每个”循环在一组集合中构建一个循环。
以下是在excel VBA中使用For Each循环的一组集合的示例,例如:
使用“ For Each ”循环,可以遍历集合中的每个对象,并对其执行一些操作。
例如,您可以浏览工作簿中的所有工作表并延长这些工作表的时间。或者,您可以浏览工作表中的所有单元格并更改格式。
使用For Each循环,您无需知道集合中有多少个对象。
对于每个循环,自动遍历每个对象并执行指定的操作。
例如,如果您保护工作簿中的所有工作表,则无论您的工作簿包含1个工作表还是20个工作表,代码都是相同的。
假设您有一本要保护所有工作表的工作簿。如:
Sub ProtectSheets()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Ws.Protect
Next ws
End Sub
在上面的示例中,我们将' ws '变量用作Worksheet对象。这告诉VBA,在该代码中应使用“ ws ”解释为工作表对象。
现在,我们使用“ For Each ”语句遍历活动工作簿中工作表集合中的每个“ ws”。
请注意,与尝试保护工作簿中的所有工作表的其他循环不同,在这里您不必担心工作簿中有多少个工作表。
您无需计算这些即可运行循环。对于每个循环,确保对所有对象进行逐一分析。
现在,浏览所有打开的工作簿并保存所有:
如果您同时使用多个工作簿,则可以一次保存所有这些工作簿。如,
Sub SaveAllWorkbooks()
Dim wb As Workbook
For Each wb In Workbooks
wb.Save
Next wb
End Sub
请注意,在上面的示例中,要将工作簿保存在特定位置,在这种情况下,不会出现提示您的提示。它将其保存在默认文件夹中。
Private Sub Constant_demo_Click()
'colors is an array
colors = Array("Pink", "orange", "Red")
Dim colornames As Variant
'iterating using For each loop.
For Each Item In colors
colornames = colornames & Item & Chr(10)
Next
MsgBox colornames
End Sub
执行上面的代码,您将获得以下输出,例如: