📜  每个循环的VBA

📅  最后修改于: 2021-01-11 14:16:06             🧑  作者: Mango

每个循环的VBA

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

执行上面的代码,您将获得以下输出,例如: