VBA Range
Inhaltsverzeichnis
VBA Range
Du möchtest mit der VBA Range und somit mit einen ganzen Bereich in Excel arbeiten?
Lerne in diesem Beitrag, wie Du mit der VBA Range Funktion ganze Bereiche erfassen und verarbeiten kannst.
Vielleicht interessieren Dich zu einem anderen Zeitpunkt noch folgende Beiträge: VBA InStr, Array, Array Length.
Was ist eine VBA Range
Eine Range in VBA, bzw. in Microsoft Excel, ist – übersetzt gesehen – eine Reichweite von mehreren Zellen einer Tabelle.
Wie Du Dir sicher vorstellen kannst, können wir so diverse Zeilen und Spalten abbilden und letztendlich durchlaufen.
Damit können wir unter anderem Summierungen, oder andere eigene Arbeitsschritte anwenden.
Die Qual der Wahl
Naja ganz so schlimm ist es nicht 😂, jedoch gibt es 2 tolle Auswahlmöglichkeiten für die Ranges.
Die erste Möglichkeit auf die VBA Ranges zuzugreifen ist es, den User ganz einfach wie bekannt seine eigene Auswahl treffen zu lassen und dann im Code auf die Auswahl zuzugreifen.
Bei der zweiten Möglichkeit handelt es sich mehr oder weniger um eine manuelle Methode, wo wir – wie aus Excel bekannt – die Ranges mit ich nenne es mal „Selektoren“ bestimmen.
Manuelle Auswahl des Nutzers – VBA Range
Stell Dir vor, der Nutzer deiner Anwendung markiert die Zellen z. B. wie folgt:
Er hat also praktisch die „Koordinaten“ A1, A2 und A3 in dieser Tabelle, bzw. diesem Tabellenblatt markiert.
Anders formuliert, könnte man diese „Range“ auch in „Excel-Sprache“ ausdrücken, was dann als „A1:A3“ bezeichnet werden würde.
Diese Range können wir im Grunde genauso in unserem VBA Skript verwenden, um die z. B. die Daten aus den respektiven Zellen abzurufen.
Auswahl via Code – VBA Range
Doch bevor wir mit dem tatsächlichen Abrufen von Werten, bzw. Iterieren von Zellen beginnen, werfen wir nochmal einen Blick auf die Auswahl der Range via Code.
Wie oben schon angesprochen verwenden wir dafür einen Ausdruck, Welchen ich als Selektor bezeichne und übergeben Diesen der Range-Funktion aus Excel.
Dim area area = Range("A1:A3")
Im Code deklarieren wir dazu erstmal eine Variable namens „area“ und weisen Ihr anschließend den Rückgabewert der Range–Funktion zu.
Danach haben wir endlich die Möglichkeit, die einzelnen Zellen, Welche hier durch die Range widergespiegelt werden zu durchlaufen.
Zellen der Range durchlaufen
Um durch die einzelnen Zellen der Range zu iterieren nutzen wir im folgenden Beispiel die „For Each„-Schleife:
For Each cell in area ' do something Next
Nun können wir innerhalb der einzelnen Schleifen-Durchläufe auf die jeweilige Zelle zugreifen.
Wir haben dadurch die Möglichkeit einerseits die hinter den Zellen steckenden Werte abgreifen und setzen, sowie die Formeln der Zellen verändern.
Werte der Zellen abrufen und verändern
Hier zeige ich Dir, wie Du einzelne Werte aus den Zellen abrufen und setzen kannst:
Werte abrufen
For Each cell in area Dim value = cell.Value ' so something with the value Next
Werte setzen
For Each cell in area cell.Value = "The new Value!" Next
Mit Formeln arbeiten
Im nächsten Abschnitt kümmern wir uns um das Setzen und Abrufen der Formeln.
Formel setzen
Wir haben die Möglichkeit die Formeln einer Range direkt zu setzen:
Range("A1:A3").Formula = "=Rand()"
Oder wie im obigen Beispiel mit Hilfe einer Schleife:
For Each cell in area cell.Formula = "=Rand()" Next