Mit Schleifen können Sie einen Codeblock eine bestimmte Anzahl von Malen wiederholen oder ihn für jedes Objekt in einer Gruppe von Objekten wiederholen. Show
Zunächst werden wir Ihnen anhand einiger Beispiele zeigen, wozu Schleifen in der Lage sind. Dann werden wir Ihnen alles über Schleifen beibringen. Schleifen in VBA – SchnellbeispieleFor-Each-SchleifenFor-Each-Schleifen durchlaufen jedes Objekt in einer Sammlung, z. B. jedes Arbeitsblatt in einer Arbeitsmappe oder jede Zelle in einem Bereich. Alle Arbeitsblätter in der Arbeitsmappe in einer Schleife durchlaufenDieser Code durchläuft alle Arbeitsblätter in der Arbeitsmappe in einer Schleife und blendet jedes Arbeitsblatt wieder ein:
Alle Zellen eines Bereichs in einer Schleife durchlaufenDieser Code durchläuft einen Zellenbereich in einer Schleife und prüft, ob der Zellenwert negativ, positiv oder Null ist:
For-Next-SchleifenEine andere Art von For-Schleife ist die For-Next-Schleife. Mit der For-Next-Schleife können Sie ganze Zahlen durchlaufen. Dieser Code durchläuft die Zahlen 1 bis 10 und zeigt jede in einer Meldungsbox an:
Do While-SchleifenDo While-Schleifen wiederholen die Aktionen, solange eine Bedingung erfüllt ist. Dieser Code durchläuft auch die Zahlen 1 bis 10 in einer Schleife und zeigt jede in einer Meldungsbox an.
Do Until-SchleifenUmgekehrt werden Do-Until-Schleifen so lange wiederholt, bis eine Bedingung erfüllt ist. Dieser Code tut das Gleiche wie die beiden vorherigen Beispiele:
Wir werden dies weiter unten besprechen, aber Sie müssen beim Erstellen von Do-While- oder Do-Until-Schleifen äußerst vorsichtig sein, damit Sie keine Endlosschleife erzeugen. VBA-Schleifen-BuilderDies ist ein Screenshot des „Loop Builders“ aus unserem Premium VBA Add-in: AutoMacro. Mit dem Loop Builder können Sie schnell und einfach Schleifen erstellen, um verschiedene Objekte oder Zahlen zu durchlaufen. Sie können Aktionen für jedes Objekt durchführen und/oder nur Objekte auswählen, die bestimmte Kriterien erfüllen.Das Add-In enthält auch viele andere Code-Builder, eine umfangreiche VBA-Code-Bibliothek und eine Reihe von Codierungswerkzeugen. Es ist ein Muss für jeden VBA-Entwickler. Jetzt werden wir die verschiedenen Arten von Schleifen eingehend behandeln. VBA – For-Next-SchleifeSyntax der For-SchleifeMit der For Next-Schleife können Sie einen Codeblock eine bestimmte Anzahl von Malen wiederholen. Die Syntax lautet:
Die Angaben in Klammern sind optional.
Wenn das verwirrend ist, machen Sie sich keine Sorgen. Wir werden einige Beispiele durchgehen: Zählen bis 10Dieser Code zählt mit einer For-Next-Schleife bis 10:
For-SchleifenschrittZählen bis 10 (nur gerade Zahlen)Mit diesem Code wird bis 10 gezählt, wobei nur gerade Zahlen gezählt werden:
Beachten Sie, dass wir „Step 2“ hinzugefügt haben. Damit wird die For-Schleife angewiesen, den Zähler bei jeder Iteration um 2 zu erhöhen. Wir können auch einen negativen Schrittwert verwenden, um in umgekehrter Richtung zu gehen: For-Schleifenschritt (umgekehrt)Countdown von 10Mit diesem Code wird von 10 heruntergezählt:
Zeilen löschen, wenn eine bestimmte Zelle leer istAm häufigsten habe ich eine For-Schleife mit negativem Schritt verwendet, um in einer Schleife durch Zellenbereiche zu gehen und Zeilen zu löschen, die bestimmte Kriterien erfüllen. Wenn Sie in einer Schleife von den oberen zu den unteren Zeilen gehen und dabei Zeilen löschen, bringen Sie Ihren Zähler durcheinander. In diesem Beispiel werden Zeilen mit leeren Zellen gelöscht (beginnend mit der untersten Zeile):
Verschachtelte For-Schleife (Engl. Nested)Sie können eine For-Schleife in einer anderen For-Schleife „verschachteln“. Wir werden verschachtelte For-Schleifen verwenden, um eine Multiplikationstabelle zu erstellen: 0Die Anweisung Exit ForMit der Anweisung Exit For können Sie eine For-Next-Schleife sofort verlassen. Normalerweise verwenden Sie Exit For zusammen mit einer If-Anweisung, um die For-Next-Schleife zu verlassen, wenn eine bestimmte Bedingung erfüllt ist. Sie könnten zum Beispiel eine For-Schleife verwenden, um eine Zelle zu finden. Sobald diese Zelle gefunden wurde, können Sie die Schleife verlassen, um Ihren Code zu beschleunigen. Dieser Code geht in einer Schleife durch die Zeilen 1 bis 1000 und sucht nach dem Wort „Fehler“ in Spalte A. Wenn es gefunden wird, wählt der Code die Zelle aus, weist Sie auf den gefundenen Fehler hin und verlässt die Schleife: 1Wichtig: Im Falle von verschachtelten For-Schleifen beendet Exit For nur die aktuelle For-Schleife, nicht alle aktiven Schleifen. Die Anweisung Continue ForVBA verfügt nicht über den Befehl „Continue„, der in Visual Basic zu finden ist. Stattdessen müssen Sie „Exit“ verwenden. Die VBA-Schleife For EachDie VBA-Schleife For Each durchläuft alle Objekte einer Sammlung in einer Schleife:
Sie können auch verschachtelte For-Each-Schleifen verwenden:
Die Syntax lautet: 2Wobei:
Alle Zellen im Bereich durchlaufen (For Each Cell in Range)Dieser Code durchläuft in einer Schleife jede Zelle in einem Bereich: 3Alle Blätter in einer Arbeitsmappe durchlaufen (For Each Worksheet in Workbook)Dieser Code durchläuft in einer Schleife alle Arbeitsblätter in einer Arbeitsmappe und hebt den Schutz für jedes Blatt auf: 4Alle offenen Arbeitsmappen durchlaufenMit diesem Code werden alle geöffneten Arbeitsmappen gespeichert und geschlossen: 5Alle Formen in einem Arbeitsblatt durchlaufenDieser Code löscht alle Formen auf dem aktuellen Arbeitsblatt. 6Alle Formen in jedem Arbeitsblatt in der Arbeitsmappe durchlaufenSie können For Each-Schleifen auch verschachteln. Hier werden alle Formen in allen Arbeitsblättern der aktiven Arbeitsmappe in einer Schleife durchlaufen: 7For-Each-If-SchleifeWie bereits erwähnt, können Sie innerhalb einer Schleife eine If-Anweisung verwenden, die Aktionen nur dann ausführt, wenn bestimmte Kriterien erfüllt sind. Mit diesem Code werden alle leeren Zeilen in einem Bereich ausgeblendet: 8VBA – Do-While-SchleifeDie VBA-Schleifen Do While und Do Until (siehe nächsten Abschnitt) sind sehr ähnlich. Sie wiederholen eine Schleife, während (oder bis) eine Bedingung erfüllt ist. Mit der Do-While-Schleife wird eine Schleife wiederholt , solange eine Bedingung noch erfüllt ist. Hier ist die Do-While-Syntax: 9Wo:
Sie können auch eine Do-While-Schleife einrichten, bei der die Bedingung am Ende der Schleife steht: 0Wir werden beide Schleifen demonstrieren und zeigen, wie sie sich unterscheiden: Do WhileHier ist das Beispiel der Do-While-Schleife, das wir zuvor gezeigt haben:
Loop WhileFühren wir nun die gleiche Prozedur durch, nur dass wir die Bedingung an das Ende der Schleife verschieben: 2VBA – Do-Until-SchleifeDo-Until-Schleifen wiederholen eine Schleife, bis eine bestimmte Bedingung erfüllt ist. Die Syntax ist im Wesentlichen die gleiche wie bei Do-While-Schleifen: 3und ebenso kann die Bedingung am Anfang oder am Ende der Schleife stehen: 4Do UntilDiese Do-Until-Schleife zählt bis 10, wie unsere vorherigen Beispiele 5Loop UntilDiese Loop-Until-Schleife zählt bis 10: 6Do-Schleife beendenÄhnlich wie Exit For zum Verlassen einer For-Schleife verwenden Sie den Befehl Exit Do, um eine Do-Schleife sofort zu verlassen 7Hier ist ein Beispiel für Exit Do: 8Schleife beenden oder abbrechenWie bereits erwähnt, können Sie Exit For oder Exit Do verwenden, um Schleifen zu beenden: 9 7Diese Befehle müssen jedoch in Ihren Code eingefügt werden, bevor Sie die Schleife ausführen. Wenn Sie versuchen, eine laufende Schleife zu „unterbrechen“, können Sie versuchen, ESC oder STRG + Pause auf der Tastatur zu drücken. Dies funktioniert jedoch möglicherweise nicht. Wenn dies nicht funktioniert, müssen Sie warten, bis Ihre Schleife beendet ist, oder, im Falle einer Endlosschleife, mit STRG + ALT + Entf Excel zwangsweise schließen. Aus diesem Grund versuche ich, Do-Schleifen zu vermeiden. Es ist dabei einfacher, versehentlich eine Endlosschleife zu erzeugen, die Sie zwingt, Excel neu zu starten, wodurch Ihre Arbeit möglicherweise verloren geht. Weitere Beispiele für SchleifenZeilen in einer Schleife durchlaufenDiese Schleife geht durch alle Zeilen einer Spalte: 1Spalten in einer Schleife durchlaufenDamit werden alle Spalten in einer Zeile durchlaufen: 2Dateien in einem Ordner in einer Schleife durchlaufenDieser Code durchläuft in einer Schleife alle Dateien in einem Ordner und erstellt eine Liste: 3Array in einer Schleife durchlaufenDieser Code geht durch das Array ‚arrList‘ anhand einer Schleife: 4Die Funktion LBound ermittelt die „untere Grenze“ des Arrays und UBound die „obere Grenze“. Schleifen in Access-VBADie meisten der oben genannten Beispiele funktionieren auch in Access-VBA. In Access wird jedoch eine Schleife durch das Recordset-Objekt und nicht durch das Range-Objekt ausgeführt. Was bedeutet Value in VBA?Die Value Eigenschaft gibt den Wert einer Zelle zurück. Bei wird nur der "reine" (Zahlen-) Wert angezeigt, nicht die Formatiertung.
Was ist Cells in VBA?Die Cells-Eigenschaft gehört zum Objektmodell von Excel - VBA . Das heißt: Das Programm Excel , samt aller Werte in den Zellen der Tabellenblätter, wird in VBA durch Objekte „modelliert“ (dargestellt, nachgebildet).
Welche Variablen gibt es in VBA?Variablen können als einer der folgenden Datentypen deklariert werden: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (für Zeichenfolgen mit variabler Länge), String * length (für Zeichenfolgen mit fester Länge), Object oder Variant.
|