VBA For Each 循环

2025年3月17日 | 阅读 3 分钟

For Each 循环用于为数组中的每个元素执行一条语句或一组语句。

"For Each" 循环类似于 "For" 循环。此循环针对数组中的每个元素执行。因此,此循环中不存在步进计数器。它通常与数组或文件系统对象结合使用,以递归方式运行。

语法

您可以使用 VBA 中的 "For Each" 循环遍历一组集合。

以下是使用 Excel VBA 中 For Each 循环的一组集合的示例,例如

  • 所有打开的工作簿的集合。
  • 工作簿中所有工作表的集合。
  • 所选单元格范围中所有单元格的集合。
  • 工作簿中所有图表或形状的集合。

使用 "For Each" 循环,您可以遍历集合中的每个对象,并对其执行一些操作。

例如,您可以遍历工作簿中的所有工作表并保护这些工作表。或者您可以遍历工作表中的所有单元格并更改格式。

使用 For Each 循环,您不需要知道集合中有多少个对象。

For Each 循环会自动遍历每个对象并执行指定的操作。

例如,如果您保护工作簿中的所有工作表,代码将保持不变,无论您的工作簿包含 1 个还是 20 个工作表。

示例

假设您有一个工作簿,您想保护其中的所有工作表。例如

在上面的示例中,我们使用 'ws' 变量作为 Worksheet 对象。这告诉 VBA 'ws' 应该用于在该代码中解释为工作表对象。

现在我们使用 "For Each" 语句遍历活动工作簿中工作表集合中的每个 "ws"。

请注意,与您尝试保护工作簿中所有工作表的其他循环不同,在这里您无需担心工作簿中有多少个工作表。

您无需对此进行计数即可运行循环。For Each 循环可确保逐个分析所有对象。

现在,要遍历所有打开的工作簿并全部保存

如果您同时处理多个工作簿,则可以一次保存所有这些工作簿。例如,

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

示例


VBA For Each Loop

执行上述代码,您将得到以下输出,例如

VBA For Each Loop