StartFormeln & Funktionen › VBA-Schleifen

VBA-Schleifen: Zellbereiche automatisch durchlaufen

Schleifen sind das Werkzeug, um in VBA wiederkehrende Schritte automatisch zu wiederholen – etwa jede Zeile einer Tabelle zu prüfen oder zu formatieren. Excel-VBA kennt dafür vor allem drei Varianten: For…Next, For Each…Next und Do While…Loop.

Beispieldaten

AB
1ProduktBestand
2Notizbuch12
3Kugelschreiber0
4Textmarker5
5Locher0
Ziel: alle Produkte mit Bestand 0 rot markieren.

For…Next – feste Anzahl Durchläufe

Am gängigsten, wenn du eine bekannte Zeilenanzahl durchlaufen willst:

Sub BestandPruefen() Dim i As Long Dim letzteZeile As Long letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To letzteZeile If Cells(i, 2).Value = 0 Then Cells(i, 2).Interior.Color = RGB(255, 199, 199) End If Next i End Sub

Cells(Rows.Count, 1).End(xlUp).Row ermittelt die letzte belegte Zeile in Spalte A – so läuft die Schleife immer korrekt bis zum Tabellenende, egal wie viele Zeilen es sind.

For Each…Next – über Zellen oder Objekte

Praktisch, wenn du nicht über Zeilennummern, sondern direkt über einen Zellbereich iterieren willst:

Sub BestandPruefenForEach() Dim zelle As Range For Each zelle In Range("B2:B5") If zelle.Value = 0 Then zelle.Interior.Color = RGB(255, 199, 199) End If Next zelle End Sub

Do While…Loop – solange eine Bedingung gilt

Sinnvoll, wenn die Anzahl der Durchläufe vorher nicht feststeht:

Sub ZeilenZaehlenBisLeer() Dim i As Long i = 2 Do While Cells(i, 1).Value <> "" i = i + 1 Loop MsgBox "Letzte belegte Zeile: " & (i - 1) End Sub
Profi-Tipp

Schleifen mit direktem Zugriff auf Cells(i,...) sind bei großen Datenmengen langsam, weil jede Zeile einzeln in Excel geschrieben wird. Für Tausende von Zeilen lohnt es sich, den Bereich zuerst in ein Array (Range.Value) einzulesen, in der Schleife nur im Array zu rechnen und das Ergebnis am Ende in einem Rutsch zurückzuschreiben.

Achtung

Bei Do While musst du selbst dafür sorgen, dass sich die Abbruchbedingung irgendwann ändert (hier i = i + 1). Fehlt das, läuft die Schleife endlos – Excel „hängt" scheinbar. Abbruch dann mit Strg+Untbr bzw. Esc.

Häufige Fehler


Verwandte Themen