VBA for each循环

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循环, 你无需知道集合中有多少个对象。
对于每个循环, 都会自动遍历每个对象并执行指定的操作。
例如, 如果你保护工作簿中的所有工作表, 则无论你的工作簿包含1个工作表还是20个工作表, 代码都是相同的。

假设你有一个要保护所有工作表的工作簿。如:
Sub ProtectSheets()Dim ws As WorksheetFor Each ws In ActiveWorkbook.WorksheetsWs.ProtectNext wsEnd Sub

在上面的示例中, 我们将’ ws’ 变量用作Worksheet对象。这告诉VBA, 在该代码中应使用’ ws’ 解释为工作表对象。
现在, 我们使用“ For Each”语句遍历活动工作簿中的工作表集合中的每个“ ws”。
请注意, 与尝试保护工作簿中所有工作表的其他循环不同, 在这里你不必担心工作簿中有多少个工作表。
你无需计算这些就可以运行循环。对于每个循环, 请确保一个一个地分析所有对象。
现在, 浏览所有打开的工作簿并保存所有:
如果你同时使用多个工作簿, 则可以一次保存所有这些工作簿。如,
Sub SaveAllWorkbooks()Dim wb As WorkbookFor Each wb In Workbookswb.SaveNext wbEnd Sub

请注意, 在上面的示例中, 要将工作簿保存在特定位置, 在这种情况下, 不会出现提示你的提示。它将其保存在默认文件夹中。

Private Sub Constant_demo_Click()'colors is an arraycolors = Array("Pink", "orange", "Red")Dim colornames As Variant'iterating using For each loop.For Each Item In colorscolornames = colornames & Item & Chr(10)NextMsgBox colornamesEnd Sub

VBA for each循环

文章图片
【VBA for each循环】执行上面的代码, 你将获得以下输出, 例如:
VBA for each循环

文章图片

    推荐阅读