StartVBA-Kurs › Range-Objekte

Das Range-Objekt – Zellen in VBA ansprechen und bearbeiten

Fast jedes Excel-Makro dreht sich um Zellen – und in VBA steht dafür das Range-Objekt im Mittelpunkt. Es steht für eine einzelne Zelle, einen zusammenhängenden Bereich oder auch mehrere getrennte Bereiche gleichzeitig.

Zellen ansprechen: Range und Cells

Cells ist besonders praktisch in Schleifen, weil sich Zeile und Spalte dort als Variable durchzählen lassen – Range braucht dafür erst eine zusammengesetzte Textadresse.

AB
1100Range("A1") / Cells(1,1)
2200Range("A2") / Cells(2,1)
3300Range("A3") / Cells(3,1)
Dieselben drei Zellen, einmal über die Adresse, einmal über Zeile/Spalte angesprochen.

Werte lesen und schreiben

Range("A1").Value = 42 ' Wert schreiben
MsgBox Range("A1").Value ' Wert auslesen

Für reine Zahlenwerte funktioniert auch .Value2 (etwas schneller, ohne Währungs-/Datumsformatierung), für den angezeigten Text .Text.

Offset und Resize

Letzte Zelle eines Bereichs ermitteln

Feste Bereichsgrößen sind unpraktisch, wenn sich die Datenmenge ändert. Üblich ist stattdessen, die letzte belegte Zeile dynamisch zu ermitteln:

Dim letzteZeile As Long
letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row

Das entspricht der Tastenkombination Strg+Pfeil-runter/hoch: von der letzten Zeile des Blatts aus nach oben zur letzten befüllten Zelle in Spalte A springen. Alternativ liefert Range("A1").CurrentRegion den gesamten zusammenhängenden Datenbereich ab A1.

Über einen Bereich schleifen

Mit For Each lässt sich jede Zelle eines Bereichs einzeln bearbeiten – hier werden alle Werte über 150 fett markiert:

Sub GrosseWerteMarkieren()
    Dim zelle As Range
    For Each zelle In Range("A1:A3")
        If zelle.Value > 150 Then
            zelle.Font.Bold = True
        End If
    Next zelle
End Sub

Auf die Tabelle oben angewendet, würden die Zellen A2 (200) und A3 (300) fett formatiert, A1 (100) bliebe unverändert.

Profi-Tipp

Vermeide Range("A1").Select gefolgt von Selection.Value = …. Direkt Range("A1").Value = … zu schreiben ist kürzer, schneller und weniger fehleranfällig – das Aktivieren einer Zelle ist für die meisten Aktionen schlicht überflüssig.

Häufige Fehler


Weiter im Kurs