Möchten Sie sich wiederholende Aufgaben in Excel mit VBA automatisieren? Erfahren Sie, wie Sie die For Each-Schleife verwenden, um Daten in Ihren Tabellenkalkulationen effizient zu bearbeiten.
Schleifen und VBA gehören zusammen, und das aus gutem Grund. Beim Umgang mit Microsoft Office-Objekten wie Arbeitsmappen, Arbeitsblättern und Bereichen können Schleifen Ihnen dabei helfen, relativ einfach zwischen ihnen umzuschalten.
Während mehr oder weniger alle VBA-Schleifen gut mit Objekten funktionieren, ist die „for each“-Schleife eine der besten Optionen, um mit Objektsammlungen zu arbeiten. Wenn Sie mit Excel VBA noch nicht vertraut sind und die for each-Schleife beherrschen möchten, können Sie schnell aus einigen dieser Beispiele lernen. Hier ist alles, was Sie über diese Quintessenz der Schleife wissen müssen.
Für die Syntax jeder Schleife
Die Syntax der for each-Schleife ist der üblichen for-Schleife in Excel VBA ziemlich ähnlich. Hier ist die Syntax:
Für jeden Variablennamen in Objektsammlung
[Stellungnahme]
[Stellungnahme]
[Stellungnahme]
Nächster Variablenname
Die Schleife beginnt mit dem Schlüsselwort »for each«; Sie können einen beliebigen Variablennamen gefolgt von der Objektsammlung verwenden. Das Objekt in der for each-Schleife können Zellen, Bereiche, Blätter und sogar Arbeitsmappen sein. Das ist die Schönheit dieser Schleife; Es gibt Ihnen die Flexibilität, mit verschiedenen Excel-Sammlungen zu arbeiten.
Die Schleife durchläuft jeden Sammlungswert und speichert die Referenz im definierten Variablennamen. Nach der Ausführung führt VBA die gespeicherten Anweisungen innerhalb der Schleife aus und wechselt zum nächsten Objekt in der Sammlung (der nächste Schlüsselwort ist hier hilfreich). Lassen Sie uns die Codestruktur anhand eines einfachen Beispiels verstehen.
So verwenden Sie die For Each-Schleife in Excel VBA
Angenommen, Sie möchten eine Zahl in den Zellen A1 bis A10 drucken. Der beste Ansatz besteht darin, die for each-Schleife mit der Range-Funktion zu verwenden und den Code das Notwendige tun zu lassen. So können Sie diese einfache Aufgabe erledigen:
- Öffnen Sie den VBA-Code-Editor, indem Sie drücken Alt + F11.
- Fügen Sie ein Modul ein, indem Sie auf klicken Modul Option innerhalb der Einfügung Tab.
- Erstellen Sie eine Unterroutine mit dem Befehl sub() im Fenster des Code-Editor-Moduls. Achten Sie darauf, dem Unterprogramm einen aussagekräftigen Namen zu geben. Für dieses Beispiel können Sie den Namen verwenden for_each_loop.
Jetzt, da die Grundlagen aus dem Weg geräumt sind, ist es an der Zeit, mit dem Schreiben des Codes zu beginnen. Geben Sie in der Unterroutine die folgenden Befehle ein:
Schwache Zelle als Bereich
Für jede Zelle In Blätter("Blatt1").Bereich("A1:A10")
cell.value = 10
Nächste Zelle
Wenn der Code ausgeführt wird, wird die C Variable speichert den Wert von A1. Als nächstes wertet es, während es zu der Anweisung innerhalb der Schleife weitergeht, den Befehl aus und gibt einen Wert von 10 in die definierte Zelle, d. h. Zelle A1, ein.
Wenn es schließlich zum Schlüsselwort Next wechselt, wechselt es zum nächsten Wert, d. h. Zelle A2. Die Schleife läuft, bis sie Zelle A10 erreicht. Dies ist die endgültige Ausgabe:
Verwenden der Schleife mit Objekten: Zellen, Blätter und Arbeitsmappen
Excel hat drei Hauptobjekttypen, mit denen Sie regelmäßig arbeiten. Dies sind Zellen, Blätter und Arbeitsmappen. So können Sie die Schleife mit allen drei Objekttypen verwenden.
Gemeinsames Arbeiten mit Zellen und Schleifen
Angenommen, Sie möchten einem Zellbereich in Sheet1 einen Wert und einige Formatierungsbedingungen hinzufügen. Als ersten Schritt müssen Sie die Bedingungen innerhalb der Schleife definieren, gefolgt von den Formatierungsbefehlen.
Geben Sie den folgenden Code in einer Unterroutine ein.
Unter for_each_loop()
Dim c Als Bereich
Für jedes c In Blättern ("Blatt1").Bereich("A1:A10")
Mit C
.Wert = 10
.Schriftart. Farbe = vbRed
.Schriftart. Fett = WAHR
.Schriftart. Durchgestrichen = WAHR
EndeMit
Nächste c
Ende Sub
Der mit Die Funktion ist nützlich, wenn Sie mehrere Funktionen mit einem bestimmten Objekt ausführen. Da Sie eine Reihe von Aufgaben mit der c-Variablen ausführen möchten, können Sie sie alle mit einer with..end with-Funktion kombinieren.
Die Schleife setzt den Wert von c mit jedem Zellenwert gleich und gibt den Wert als 10 ein. Außerdem ändert es die Farbe der Zelle in Rot, hebt den Wert hervor und streicht ihn durch. Sobald es alle Schritte abgeschlossen hat, bewegt es sich zum nächsten definierten Wert im Bereich.
Verwenden der Schleife zum Steuern von Blättern
Ähnlich wie im obigen Beispiel können Sie die for each-Schleife verwenden, um Blätter zu steuern. Wie wäre es, den Namen von Sheet1 mit VBA in Sheet3 zu ändern?
Sie können den folgenden Code verwenden, um ein vorhandenes Arbeitsblatt in Excel mithilfe von VBA umzubenennen:
Unter for_each_loop_sheets()
FürJedescheißeInDieseArbeitsmappe.Blätter
Wenn Scheiße. Name = "Blatt1" Dann
scheiße. Name = "Blatt3"
EndeWenn
Nächste Scheiße
Ende Sub
Der Code durchläuft jedes Blatt in der Arbeitsmappe und überprüft den Namen jedes Blatts. Wenn es auf den Namen Sheet1 stößt, ändert es ihn in Sheet3. Es durchläuft die verbleibenden Blätter, falls vorhanden, innerhalb der Arbeitsmappe. Sobald die Codeausführung das letzte Blatt erreicht, verlässt sie die Schleife und das Unterprogramm.
Unter einigen anderen häufigen Verwendungen können Sie Zusammenführen mehrerer Arbeitsblätter mit VBA und aktualisieren Sie den Inhalt in einem einzelnen Blatt mithilfe von Schleifen.
Wechseln Sie mit der Schleife durch Arbeitsmappen
Schließlich können Sie die for each-Schleife verwenden, um durch verschiedene Arbeitsmappen zu wechseln und bestimmte Aufgaben auszuführen. Lassen Sie uns diese Funktion an einem Beispiel demonstrieren.
Sie können VBA-Befehle verwenden, um drei neue Arbeitsmappen hinzuzufügen und alle geöffneten zusammen zu schließen. So können Sie es tun:
Sub loop_workbook()
Dim-Arbeitsbuch als Arbeitsmappe
Arbeitsbücher.Hinzufügen
Arbeitsbücher.Hinzufügen
Arbeitsbücher.Hinzufügen
Für jedes Arbeitsbuch in Arbeitsmappen
Arbeitsbuch.Schließen
Nächstes Arbeitsheft
Ende Sub
Der obige Code schließt auch Ihre Makroarbeitsmappe; Stellen Sie sicher, dass Sie Ihre Codes gespeichert haben, bevor Sie diesen Code ausführen.
Da Schleifen mehrere Verwendungszwecke haben, können Sie das auch Konsolidieren Sie Daten aus mehreren Arbeitsmappen in einer einzigen Arbeitsmappe.
Verwenden einer verschachtelten IF-Anweisung mit der Schleife
Wie im obigen Beispiel können Sie eine IF-Anweisung innerhalb der Schleife verwenden, um nach bestimmten Bedingungen zu suchen. Lassen Sie uns die Hintergrundfarbe der Zelle basierend auf den Werten der Zelle ändern.
In den Zellen A1:A20 befinden sich einige Zufallszahlen. Sie können eine Schleife schreiben, um jede gegebene Zelle im Bereich zu durchlaufen; Wenn der Wert der Zelle kleiner als 10 ist, sollte sich die Zellenfarbe in Rot ändern. Wenn der Zellenwert 10 überschreitet, sollte er grün werden. Verwenden Sie dazu folgenden Code:
Unterschleife_w_if()
Dim c Als Bereich
Für jedes c In Blättern ("Blatt4").Bereich("A1:A20")
WennC.Wert < 10 Dann
C. Innere. Farbindex = 3
Anders: C. Innere. Farbindex = 4
EndeWenn
Nächste c
Ende Sub
So sieht die Ausgabe aus:
Verwenden von Schleifen in Excel VBA
Excel VBA ist nicht nur auf die for each-Schleife beschränkt. Es gibt eine Vielzahl hilfreicher Schleifen, mit denen Sie verschiedene Funktionen mühelos ausführen können. Verabschieden Sie sich von alltäglichen, manuellen Aufgaben, da VBA-Schleifen wie die for-Schleife, do while und do until Schleifen einspringen, um Ihnen das Leben zu erleichtern.