如何为每个循环使用VBA? (带有Excel示例)

每个循环的Excel VBA

每个循环的VBA 遍历所有对象或项目的集合,并进行类似的活动。它将考虑所有可用的指定对象,并在每个对象中执行指示的活动。

在VBA中,必须了解VBA中的循环。循环使您可以对excel中的许多单元格或对象进行相同类型的活动。在今天的文章中,我们将专注于For Each循环机制。

句法

对于每个循环,可以循环遍历所有设置的对象或项目集合。集合只不过是“所有打开的工作簿”,“工作簿中的所有工作表”,“工作簿中的所有形状和图表的集合”。

让我们看一下语法。

对于每个  集合中的对象怎么办? 下一个 目的 

例如,您的工作簿中有10张工作表,并且您想要隐藏除您所在的工作表以外的所有工作表。您可以手动隐藏吗,是的,您可以,但是如果您有100张工作表,那不是那么无聊和时间耗时的任务要做。您可以为每个循环使用此功能。

如何在VBA中使用For Each Loop? (例子)

您可以在此处下载此VBA用于每个循环模板– VBA用于每个循环模板

Example#1 –在所有工作表中插入相同的文本

我们将通过一个简单的示例了解如何在VBA中使用FOR EACH。假设您在一个工作簿中有5个工作表,并且要在单元格A1中的所有工作表中插入单词“ Hello”。

我们可以使用FOR EACH LOOP做到这一点。您需要记住的一件事是,我们实际上是在每个工作表中而不是在同一工作表中执行此活动。请按照以下步骤编写VBA代码。

步骤1: 启动excel宏。

代码:

 Sub For_Each_Example1()结束Sub 

第2步: 由于我们指的是工作表,因此将该变量声明为“ Worksheet”。

代码:

 Sub For_Each_Example1()Dim Ws作为工作表结尾Sub 

第三步: 现在使用FOR EACH LOOP,我们需要引用活动工作簿中的每个工作表。

代码:

 Sub For_Each_Example1()将ActiveWorkbook中每个W的Ws作为工作表调暗。工作表Next Ws结束Sub 

第4步: 现在在每个工作表中写下我们想做的事情。在每个工作表中,我们需要在单元格A1中放置“ Hello”一词。

代码:

 Sub For_Each_Example1()将ActiveWorkbook.Worksheets Ws.Range(“ A1”)。Value =“ Hello”下一个Ws作为工作表的Ws作为下一个Ws结束 

步骤5: 现在,通过选项手动运行此代码或按快捷键F5,无论有多少工作表,都将在所有工作表中插入单词“ Hello”。

Example#2 –隐藏所有工作表

如文章前面所述,如果除了您所在的那张纸之外还有数百张纸要隐藏,该怎么办。使用For Each循环,我们可以在excel中隐藏所有纸页。

步骤1: 用您的名字启动宏。

代码:

 Sub For_Each_Example2()结束Sub 

第2步: 将该变量声明为“瓦数”.

代码:

 Sub For_Each_Example2()Dim Ws作为工作表结尾Sub 

第三步: 现在,在每个工作表中,您需要做的就是隐藏工作表。

代码:

 Sub For_Each_Example2()将ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden下一个Ws作为工作表中的Ws缩小为下一个Ws结束Sub 

第4步: 但是,如果运行上面的代码,它将尝试隐藏所有工作表,但是excel需要至少有一个工作表可见。因此,我们需要告诉您不要隐藏哪张纸。

代码:

 Sub For_Each_Example2()将ActiveWorkbook.Worksheets中的Ws用作工作表的Ws.Ws.Name如果“主表”,则Ws.Visible = xlSheetVeryHidden End,如果下一个Ws结束 

运算符 方法 不等于VBA.

因此,代码说,当您循环浏览活动工作簿中的所有工作表时,仅当工作表名称与“主工作表”的工作表名称不相等时才会隐藏。

这可以通过使用VBA中的IF语句来完成。将代码写为IF Ws.Name“ Main Sheet”,然后隐藏,或者等于工作表名称“ Main Sheet”,然后隐藏。

步骤5: 现在,使用F5键或手动运行代码,它将隐藏除名为“ Main Sheet”的工作表之外的所有工作表。

Example#3 –取消隐藏所有工作表

我们已经看到了如何隐藏除我们所在的工作表之外的所有工作表。类似地,我们也可以取消隐藏所有工作表。

我们只需要更改代码即可 xlSheetVeryHidden xlSheetVisible。

代码:

 Sub For_Each_Example3()将ActiveWorkbook中每个W的Ws作为工作表的昏暗Ws.Worksheets Ws.Visible = xlSheetVisible下一个Ws结束Sub 

在这里,我们不需要IF条件,因为我们隐藏了所有工作表。如果您不想取消隐藏任何特定的工作表,则可以使用IF条件并提供工作表名称。

Example#4 –保护和取消保护所有工作表

保护所有图纸: 我们仅需一段代码就可以保护工作簿中的所有工作表。所有代码都是相同的,我们唯一需要做的就是代替Ws。可见我们需要输入代码Ws。保护并输入密码。

代码:

 Sub For_Each_Example4()将ActiveWorkbook.Worksheets Ws.Protect密码中的Ws作为工作表的Ws.Protect密码:=“ Excel @ 2019” Next Ws End Sub 

取消保护所有工作表: 同样,使用vba,我们还可以取消保护工作簿中所有受保护的工作表。我们只需要输入Unprotect和密码一词即可。

代码:

 Sub For_Each_Example6()将ActiveWorkbook.Worksheets Ws.Unprotect Password:=“ Excel @ 2019”下一个Ws作为工作表中的Ws昏暗的Ws结束Sub 

要记住的事情

  • 每个都用于对象的集合。
  • 它将考虑指定工作簿中的所有指定对象。
  • 在声明变量时,我们需要指向哪个对象。例如工作表,工作簿,图表等。