Startseite

Die Range-Methode

Mit der Range-Methode werden Bereiche in der Exceltabelle angesprochen. Das können einzelne Zellen, oder auch Bereiche von Zellen sein. In der folgenden Tabelle werden die verschiedenen möglichen Bezüge aufgelistet.
Bezug Markiert
Range("A1") Zelle A1
Range("A1:D20") Zellen A1 bis D20
Range("A1":"D20", "K3":"P15") Zellen A1 bis D20 und K3 bis P15
Range("A:A") Spalte A
Range("A:D") Saplten A bis D
Range("A:A, E:E, H:H") Spalten A, E und H
Range("1:1") Zeile 1
Range("1:8") Zeilen 1 bis 8
Range("1:1, 5:5, 9:9") Zeilen 1, 5 und 9
Das heißt, mit der Beispielanweisung werden die Zellen A1 bis D20 angesprochen, dort lassen sich verschiedene Operationen ausführen. Wird der Befehl zum Beispiel um die Anweisung .Select erweitert, wird der benannte Bereich selektiert.
In der vorgestellten Form ist die Anweisung "statisch", das bedeutet: so wie sie da steht, läßt sie sich schlecht in ein Makro einbinden, da dort doch eher "dynamische" Abläufe vorliegen. Damit will ich sagen, die Werte für den zu definierenden Bereich ergebn sich oft erst aus laufenden Berechnungen. Deshalb möchte ich im Anschluß zeigen, wie man in die Range-Methode Variablen einbinden kann.
Will man in einer Schleife bestimmte Zeilen nacheinander abarbeiten, könnte das so aussehen:
Range("A" & z, "D" & z)
Dabei ist z die Variable für die Zeilennummer, sie kann zum Beispiel aus einer Schleife übernommen werden. Bitte beachten: Das Trennzeichen ist in diesem Fall ein Komma!
Aber auch das ist möglich:
Range("A1 : D" & z)
Jetzt ist das Trennzeichen wieder der Doppelpunkt!
Es ist auch möglich, die Spaltenbezeichnungen variabel zu gestalten, hier braucht man allerdings einen "Kunstgriff". Da eine Schleife im Regelfall eine Zahlenfolge (Schleifenzähler) übergibt, die Spaltenbezeichnung aber aus Buchstaben besteht, hat man ein Problem.
Die Lösung liegt in den Chr-Strings. Das ist eine Liste, die unter anderen allen druckbaren Zeichen eine Zahl zuordnet. Darüber können Programmiersprachen wie VBA wieder die Zeichen zuordnen. Das große A hat beispielweise den Wert 65. Das kann man für unser Vorhaben ausnutzen. Unser Beispiel von oben kann dann so aussehen:
Range(Chr(64) & z, Chr(67) & z)
So macht das natürlich noch keinen Sinn, denn die Wertzuweisungen sind immer noch "statisch". Anstelle der Zahlen lassen sich aber auch Variablen einsetzen, das ist dann auch die Lösung des Problems. So sieht unser Beispiel jetzt aus:
Range(Chr(wert1) & z, Chr(wert2) & z)
Aber Vorsicht, nach der Spalte Z kommt die Spalte AA. Diesen Fall muß man dann gesondert "abfangen". Etwa in dieser Art:
IF wert2 > 26 Then Range(Chr(wert1), Chr(65) & Chr(wert2 - 65))
Das funktioniert dann aber wieder nur bis Spalte AZ!!
Excel wäre nicht Excel, gäbe es nicht noch eine weitere Lösung. Man kann nämlich den Cells-Befehl, den ich auf einer anderen Seite schon beschrieben habe, mit der Range-Methode kombinieren. Das sieht dann so aus:
Range(Cells(1, 1), Cells(20, 4))
Diese Lösung vermeidet die oben beschriebenen Nachteile, wenn man die Range-Methode in Schleifen einbindet, da hier ja die unmittelbare Verwendung von numerischen Variablen aus Zählschleifen möglich ist.