Einführung in Excel VBA: Do While und Do Until Schleifen

Melden

Hier ist ein ausführliches Tutorial zum Thema Excel VBA: Do While und Do Until Schleifen.


In der Welt der Excel-Automatisierung sind Schleifen (Loops) eines der mächtigsten Werkzeuge. Sie erlauben es dir, Code-Blöcke so lange zu wiederholen, bis eine bestimmte Bedingung erfüllt ist oder solange eine Bedingung wahr bleibt.

In diesem Tutorial lernst du die beiden wichtigsten Arten von bedingten Schleifen kennen: Do While und Do Until.


1. Was sind Schleifen?

Stell dir vor, du möchtest 1.000 Zeilen prüfen und jede Zelle markieren, die den Wert "Fehler" enthält. Statt 1.000 Mal denselben Code zu schreiben, nutzt du eine Schleife, die diese Aufgabe automatisch Zeile für Zeile abarbeitet.


2. Die Do While Schleife

Die Do While-Schleife wird ausgeführt, solange eine Bedingung wahr (True) ist.

Syntax:

Do While Bedingung
    ' Code, der ausgeführt wird
Loop

Beispiel:

Wir möchten die Zahlen 1 bis 5 in die Spalte A schreiben.

Sub DoWhileBeispiel()
    Dim i As Integer
    i = 1 ' Startwert

    Do While i <= 5
        Cells(i, 1).Value = "Durchlauf Nr. " & i
        i = i + 1 ' WICHTIG: Zähler erhöhen, um Endlosschleife zu vermeiden
    Loop
End Sub

Erklärung: Die Schleife prüft: "Ist i kleiner oder gleich 5?". Da i am Anfang 1 ist (wahr), wird der Code ausgeführt. Dann wird i zu 2, 3, 4, 5. Sobald i den Wert 6 erreicht, ist die Bedingung falsch und die Schleife stoppt.


3. Die Do Until Schleife

Die Do Until-Schleife wird ausgeführt, bis eine Bedingung wahr wird. Man kann auch sagen: Sie läuft so lange, wie die Bedingung falsch (False) ist.

Syntax:

Do Until Bedingung
    ' Code, der ausgeführt wird
Loop

Beispiel:

Dasselbe Beispiel wie oben, aber mit Until:

Sub DoUntilBeispiel()
    Dim i As Integer
    i = 1

    Do Until i > 5
        Cells(i, 2).Value = "Durchlauf Nr. " & i
        i = i + 1
    Loop
End Sub

Erklärung: Die Schleife läuft, BIS i größer als 5 ist. Sobald i = 6 ist, bricht sie ab.


4. Der Unterschied: Wann nutze ich was?

Die Entscheidung liegt oft bei der persönlichen Logik, aber hier ist eine Faustregel:

  • Do While: "Mache weiter, solange die Zelle nicht leer ist."
  • Do Until: "Mache weiter, bis du eine leere Zelle findest."
Typ Fokus Logik
Do While Kontinuität Läuft, solange die Bedingung JA sagt.
Do Until Zielerreichung Läuft, bis die Bedingung JA sagt.

5. Besonderheit: Bedingung am Ende prüfen

Manchmal möchtest du, dass der Code mindestens einmal ausgeführt wird, egal ob die Bedingung von Anfang an erfüllt ist oder nicht. In diesem Fall schreibst du die Bedingung hinter das Wort Loop.

Beispiel Do Loop While:

Sub MindestensEinmal()
    Dim i As Integer
    i = 10

    Do
        Cells(i, 3).Value = "Ich laufe mindestens einmal"
        i = i + 1
    Loop While i < 5
End Sub

Hier ist i (10) eigentlich nicht kleiner als 5. Trotzdem wird der Text einmal in Zeile 10 geschrieben, weil die Prüfung erst am Ende erfolgt.


6. Häufiger Fehler: Die Endlosschleife

Einer der häufigsten Fehler bei Anfängern ist das Vergessen der Zählervariable (z.B. i = i + 1).

Was passiert dann? Die Bedingung bleibt ewig wahr (z.B. bleibt i immer 1 und somit immer kleiner als 5). Excel wird einfrieren und reagiert nicht mehr.

Rettung: Solltest du in einer Endlosschleife feststecken, drücke die Tastenkombination Strg + Pause (oder Esc), um den VBA-Code abzubrechen.


7. Praxisbeispiel: Daten verarbeiten bis zur ersten leeren Zelle

Dies ist der am häufigsten genutzte Anwendungsfall in Excel:

Sub VerarbeiteDaten()
    Dim Zeile As Integer
    Zeile = 1

    ' Laufe so lange, wie die Zelle in Spalte A nicht leer ist
    Do While Cells(Zeile, 1).Value <> ""
        ' Hier könnte eine Berechnung stehen
        Cells(Zeile, 2).Value = Cells(Zeile, 1).Value * 1.19 ' MwSt berechnen

        Zeile = Zeile + 1 ' Nächste Zeile
    Loop

    MsgBox "Verarbeitung abgeschlossen!"
End Sub

Zusammenfassung

  1. Do While: Wiederhole, solange Bedingung wahr.
  2. Do Until: Wiederhole, bis Bedingung wahr wird.
  3. Zähler nicht vergessen: Sorge immer dafür, dass die Bedingung irgendwann erfüllt (oder nicht mehr erfüllt) wird.
  4. Position: Steht die Bedingung oben (Do While), wird sie evtl. gar nicht ausgeführt. Steht sie unten (Loop While), wird sie mindestens einmal ausgeführt.
0