Wie verwende ich VBA für jede Schleife? (mit Excel-Beispielen)

Inhaltsverzeichnis

Excel VBA für jede Schleife

VBA For Each Loop durchläuft die gesamte Sammlung von Objekten oder Elementen und führt ähnliche Aktivitäten aus. Es berücksichtigt alle verfügbaren angegebenen Objekte und führt in jedem Objekt angewiesene Aktivitäten aus.

In VBA ist es obligatorisch, die Schleifen zu verstehen. Mit einer Schleife können Sie für viele Zellen oder Objekte in Excel dieselbe Art von Aktivität ausführen. Im heutigen Artikel konzentrieren wir uns auf den For Each Loop-Mechanismus.

Syntax

For Each Loop kann die gesamte Sammlung von Objekten oder Elementen durchlaufen. Eine Gruppe ist nichts anderes als "Alle geöffneten Arbeitsmappen", "Alle Arbeitsblätter in einer Arbeitsmappe", "Alle Sammlungen von Formen und Diagrammen in der Arbeitsmappe".

Schauen wir uns die Syntax an.

Was ist für jedes Objekt in der Sammlung zu tun? Nächstes Objekt

Sie haben beispielsweise 10 Blätter in Ihrer Arbeitsmappe und möchten alle Arbeitsblätter außer dem, in dem Sie sich befinden, ausblenden. Können Sie sie manuell ausblenden? Ja, das können Sie, aber was ist, wenn Sie 100 solcher Blätter haben? Ist das nicht eine mühsame und zeitaufwändige Aufgabe? Sie können dies mit für jede Schleife tun.

Wie verwende ich For Each Loop in VBA? (Beispiele)

Beispiel 1 - Fügen Sie denselben Text in alle Blätter ein

Wir werden anhand eines einfachen Beispiels sehen, wie FOR EACH in VBA verwendet wird. Angenommen, Sie haben 5 Arbeitsblätter in einer Arbeitsmappe und möchten das Wort „Hallo“ in alle Arbeitsblätter in Zelle A1 einfügen.

Wir können dies mit FOR EACH LOOP tun. Eine Sache, an die Sie sich hier erinnern müssen, ist, dass wir diese Aktivität in jedem Arbeitsblatt ausführen, nicht in demselben Arbeitsblatt. Führen Sie die folgenden Schritte aus, um den VBA-Code zu schreiben.

Schritt 1: Starten Sie das Excel-Makro.

Code:

Sub For_Each_Example1 () End Sub

Schritt 2: Da wir uns auf die Arbeitsblätter beziehen, deklarieren Sie die Variable als "Arbeitsblatt".

Code:

Sub For_Each_Example1 () Dim Ws As Worksheet End Sub

Schritt 3: Mit FOR EACH LOOP müssen wir nun auf jedes Arbeitsblatt in der aktiven Arbeitsmappe verweisen.

Code:

Sub For_Each_Example1 () Dim Ws als Arbeitsblatt für jedes Ws in ActiveWorkbook.Worksheets Next Ws End Sub

Schritt 4: Schreiben Sie nun in jedes Arbeitsblatt, was wir tun möchten. In jedem Arbeitsblatt müssen wir das Wort "Hallo" in Zelle A1 einfügen.

Code:

Sub For_Each_Example1 () Dim Ws als Arbeitsblatt für jedes Ws in ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hello" Next Ws End Sub

Schritt 5: Führen Sie diesen Code nun manuell über die Option aus oder drücken Sie die Tastenkombination F5. Es spielt keine Rolle, wie viele Blätter Sie haben; Es wird das Wort "Hallo" in alle Arbeitsblätter einfügen.

Beispiel 2 - Alle Blätter ausblenden

Wie bereits in diesem Beitrag erwähnt, müssen Sie Hunderte von Blättern ausblenden, außer dem, in dem Sie sich befinden. Mit Für jede Schleife können wir alle Blätter in Excel ausblenden.

Schritt 1: Starten Sie das Makro mit Ihrem Namen.

Code:

Sub For_Each_Example2 () End Sub

Schritt 2: Deklarieren Sie die Variable als " Ws".

Code:

Sub For_Each_Example2() Dim Ws As Worksheet End Sub

Step 3: Now, in each worksheet, what you need to do is hide the sheet.

Code:

Sub For_Each_Example2() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws End Sub

Step 4: But if you run the above code, it will try to hide all the sheets, but excel needs at least one sheet visible. So we need to tell which sheet not to hide.

Code:

Sub For_Each_Example2() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If Ws.Name "Main Sheet" Then Ws.Visible = xlSheetVeryHidden End If Next Ws End Sub

The operator symbol means not equal to in VBA.

So code says when you are looping through all the worksheets in the active workbook, hide only if the sheet name is not equal to the sheet name of Main Sheet.

This can be done by using the IF statement in VBA. Write the code as IF Ws.Name “Main Sheet” Then hide or if it is equal to the sheet name “Main Sheet,” then don’t hide.

Step 5: Now run the code using the F5 key or manually. Then, it will hide all the worksheets except the one named “Main Sheet.”

Example #3 - Unhide All the Sheets

We have seen how to hide all sheets except the one we are in. Similarly, we can unhide all the worksheets as well.

We need to change the code from xlSheetVeryHidden to xlSheetVisible.

Code:

Sub For_Each_Example3() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws End Sub

Here we don’t need the IF condition because we are unhiding all the sheets. If you don’t want to unhide any specific sheet, then you can use the IF condition and supply the sheet name.

Example #4 - Protect and UnProtect All the Sheets

Protect All Sheets: We can protect all the sheets in the workbook with just a piece of code. All the principle is the same only thing we need to do here is instead of Ws. Visible, we need to put the code Ws. Protect and type the password.

Code:

Sub For_Each_Example4() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Protect Password:="Excel@2019" Next Ws End Sub

Alle Blätter aufheben: In ähnlicher Weise können wir mit VBA auch alle in der Arbeitsmappe geschützten Blätter aufheben. Wir müssen das Wort Unprotect und Passwort setzen.

Code:

Sub For_Each_Example6 () Dim Ws als Arbeitsblatt für jedes Ws in ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 2019" Next Ws End Sub

Dinge, an die man sich erinnern sollte

  • Jedes ist für die Sammlung von Objekten.
  • Es werden alle angegebenen Objekte in der angegebenen Arbeitsmappe berücksichtigt.
  • Beim Deklarieren der Variablen benötigen wir das Objekt, auf das wir uns beziehen, z. B. Arbeitsblatt, Arbeitsmappe, Diagramm usw.

Interessante Beiträge...