Service: Excel-VBA: Zellen und Zellbereiche ansprechen

Zellen oder Zellbereiche werden in Excel-VBA mit Hilfe eines 'Range'- oder eines 'Cells'-Objekts oder mit einer Kombination aus beidem angesprochen.

Einzelne Zellen

Einzelne Zellen können entweder mit der 'A1'-Schreibweise über ein 'Range'-Objekt oder mit der Index-Schreibweise über ein 'Cells'-Objekt angesprochen werden.

' 'A1'-Schreibweise
    Range("A1").Value = 10
' Oder kürzer:
    [A1].Value = 10
' Index-Schreibweise
    Cells(2, 1).Value = 10

Verwendet man die Index-Schreibweise, bezeichnet der erste Parameter die Zeilennummer und der zweite Index die Spaltennummer. Also bedeutet 'Cells(2, 1)' die Zelle in Zeile zwei, Spalte eins (also 'A2').

Zellbereiche

Auch hier kann wahlweise die 'A1'-Schreibweise oder die Index-Schreibweise verwendet werden.

' 'A1'-Schreibweise
    Range("A1:B2").Interior.ColorIndex  = 15
' oder
    [A1:B2].Interior.ColorIndex  = 15
' Index-Schreibweise
    Range(Cells(1, 1), Cells(2, 2)).Interior.ColorIndex = 15

Die Index-Schreibweise erscheint sehr umständlich und deswegen auf den ersten Blick von geringem Nutzen. Wenn man jedoch bei komplexeren Makros Spaltenangaben indirekt ermitteln muss, ist die Index-Schreibweise von großem Nutzen.

    Dim iAnfSp As Long, iEndSp As Long

' Spaltenangaben kommen von irgend woher (z.B. Berechnung oder Parameter)
    iAnfSp = 10
    iEndSp = 12

' ...
    Range(Cells(1, iAnfSp), Cells(2, iEndSp)).Interior.ColorIndex = 15
Arbeitsblatt angeben

Wahlweise kann man mit angeben, auf welches Arbeitsblatt man sich bezieht. Der entsprechende Code sieht dann etwa so aus:

    Sheets.Item("Tabelle3").[A1].Value = 10
    Sheets.Item("Tabelle3").[A1:B2].Interior.ColorIndex  = 15

Um den Code kürzer, übersichtlicher und schneller zu machen, ist es von Vorteil, den Zugriff auf Arbeitsblätter über eine WorkSheet-Variable durchzuführen.

    Dim ws as WorkSheet
    Set ws = Sheets.Item("Tabelle3")
    ws.[A1].Value = 10
    ws.[A1:B2].Interior.ColorIndex  = 15

Wichtig: Spricht man einen Zellbereich mit Hilfe der Index-Schreibweise an, muss man das Arbeitsblatt sowohl für das 'Range'-Objekt als auch für die 'Cells'-Objekte angeben.

Dim ws as WorkSheet
Set ws = Sheets.Item("Tabelle3")
ws.Range(ws.Cells(1, iAnfSp), ws.Cells(2, iEndSp)).Interior.ColorIndex = 15

Ergebnis: vollständig vordefinierte Routine mit Fehlerbehandlung Interessant für Sie:

VBA-Extentions-Tools

Produktivität in VBA steigern
Routinearbeiten in VBA vereinfachen



Seitenanfang

Kontaktaufnahme- und Terminvereinbarung:

Bei Fragen und für Terminvereinbarungen erreichen Sie uns unter:

0 63 49 99 07 38

0 151 51 95 34 00

Oder nutzen Sie das Kontaktformular




Ihr Ansprechpartner:


Hier sollte das Fahnungsfoto zu sehen sein.

Ralf Kunsmann

Spezialist für VBA-Programmierung
(alle Office-Anwendungen)
Entwickler der
VBA-Extension-Tools