Excel VBA-Bereichsobjekt
โก Intelligente Zusammenfassung
Das Excel-VBA-Range-Objekt reprรคsentiert eine einzelne Zelle oder eine Gruppe von Zellen in einem Arbeitsblatt. Diese Seite erlรคutert die Objekthierarchie, die Eigenschaften โRangeโ und โCellsโ, das Auswรคhlen und Referenzieren von Zellen, das Lesen und Schreiben von Werten sowie die Offset-Eigenschaft.

Was ist der VBA-Bereich?
Das VBA-Bereichsobjekt stellt eine Zelle oder mehrere Zellen in Ihrem Excel-Arbeitsblatt dar. Es ist das wichtigste Objekt von Excel VBA. Mithilfe des Excel-VBA-Bereichsobjekts kรถnnen Sie auf Folgendes verweisen:
- Eine einzelne Zelle
- Eine Zeile oder Spalte von Zellen
- Eine Auswahl von Zellen
- Ein 3D-Bereich
Wie wir in unserem vorherigen Tutorial besprochen haben, wird VBA verwendet, um ein Video aufzuzeichnen und auszufรผhren. MakroDoch wie erkennt VBA, welche Daten auf dem Tabellenblatt bearbeitet werden mรผssen? Hier kommen VBA-Bereichsobjekte ins Spiel.
Einfรผhrung in das Referenzieren von Objekten in VBA
Verweisen auf das VBA-Range-Objekt und den Objektqualifizierer von Excel.
- Objektqualifizierer: Dies wird zur Referenzierung des Objekts verwendet. Es gibt die Arbeitsmappe oder das Arbeitsblatt an, auf die Sie sich beziehen.
Um diese Zellwerte zu manipulieren, Eigenschaften im Vergleich und Methoden werden verwendet.
- Eigentum: Eine Eigenschaft speichert Informationen รผber das Objekt.
- Anleitung: Eine Methode ist eine Aktion des Objekts, die sie ausfรผhren wird. Bereichsobjekte kรถnnen Aktionen wie Auswรคhlen, Kopieren, Lรถschen, Sortieren usw. ausfรผhren.
VBA verwendet ein hierarchisches Objektmuster, um auf Objekte in Excel zuzugreifen. Die unten dargestellte Struktur muss eingehalten werden. Der Punkt (.dot) verbindet die Objekte auf den verschiedenen Ebenen.
Application.Workbooks.Worksheets.Range
Diese Hierarchie kann รผber zwei verschiedene Eigenschaften erreicht werden, wobei die Range-Eigenschaft am hรคufigsten verwendet wird.
So verweisen Sie mithilfe der Range-Eigenschaft auf ein Excel VBA-Range-Objekt
Die Range-Eigenschaft kann auf zwei verschiedene Objekttypen angewendet werden.
- Arbeitsblattobjekte
- Bereichsobjekte
Syntax fรผr die Range-Eigenschaft
- Das Schlรผsselwort โReichweiteโ.
- Klammern, die dem Schlรผsselwort folgen
- Relevanter Zellbereich
- Zitat (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")
Wenn Sie wie oben gezeigt auf ein Range-Objekt verweisen, wird darauf verwiesen vollqualifizierte ReferenzSie haben Excel genau mitgeteilt, welchen Bereich, welches Tabellenblatt und welches Arbeitsblatt Sie benรถtigen.
BeispielNachrichtBox Worksheets(โSheet1โ).Range(โA1โ).Value
Mit der Range-Eigenschaft kรถnnen Sie viele Aufgaben ausfรผhren, wie zum Beispiel:
- Beziehen Sie sich mithilfe der Bereichseigenschaft auf eine einzelne Zelle
- Verweisen Sie mithilfe der Worksheet.Range-Eigenschaft auf eine einzelne Zelle
- Beziehen Sie sich auf eine ganze Zeile oder Spalte
- Verweisen Sie auf zusammengefรผhrte Zellen mithilfe der Worksheet.Range-Eigenschaft und vielem mehr
Daher wird es zu langwierig sein, alle Szenarien fรผr Bereichseigenschaften abzudecken. Fรผr die oben genannten Szenarien werden wir nur ein Beispiel zeigen. Beziehen Sie sich mithilfe der Bereichseigenschaft auf eine einzelne Zelle.
Verweisen Sie mithilfe der Worksheet.Range-Eigenschaft auf eine einzelne Zelle
Um auf eine einzelne Zelle zu verweisen, รผbergeben Sie deren Adresse als Textzeichenfolge an die Range-Eigenschaft.
Die Syntax ist einfach โBereich(โZelleโ)โ.
Hier verwenden wir den Befehl โ.Selectโ, um die einzelne Zelle aus dem Blatt auszuwรคhlen.
Schritt 1) รffnen Sie als Nรคchstes Excel.
Schritt 2) In diesem Schritt
- Klicken Sie auf
.
- Es รถffnet sich ein Fenster.
- Geben Sie hier Ihren Programmnamen ein und klicken Sie auf die Schaltflรคche โOKโ.
- Sie gelangen zur Excel-Hauptdatei. Klicken Sie im oberen Menรผ auf die Schaltflรคche โAufzeichnung stoppenโ, um die Aufzeichnung des Makros zu beenden.
Schritt 3) Im nรคchsten Schritt
- Klicken Sie auf die Schaltflรคche Makro
aus dem oberen Menรผ. Es รถffnet sich das Fenster unten.
- Klicken Sie in diesem Fenster auf die Schaltflรคche โBearbeitenโ.
Schritt 4) Der obige Schritt รถffnet den VBA-Code-Editor fรผr die Datei โEinzelner Zellbereichโ. Geben Sie den unten gezeigten Code ein, um den Bereich โA1โ aus dem Excel-Arbeitsblatt auszuwรคhlen.
Sub SingleCellRange() Range("A1").Select End Sub
Schritt 5) Speichern Sie nun die Datei und fรผhren Sie das Programm wie unten gezeigt aus.
Schritt 6) Sie werden sehen, dass Zelle โA1โ nach der Ausfรผhrung des Programms ausgewรคhlt ist.
Ebenso kรถnnen Sie eine Zelle mit einem bestimmten Namen auswรคhlen. Wenn Sie beispielsweise nach einer Zelle mit dem Namen โGuru99 โ VBA-Tutorialโ. Sie mรผssen den unten gezeigten Befehl ausfรผhren. Dadurch wird die Zelle mit diesem Namen ausgewรคhlt.
Reichweite("Guru99- VBA-Tutorialโ).Select
Um ein anderes Bereichsobjekt anzuwenden, finden Sie hier das Codebeispiel.
| Bereich zum Auswรคhlen einer Zelle in Excel | Bereich deklariert |
|---|---|
| Fรผr eine einzelne Zeile | Bereich (โ1:1โ) |
| Fรผr eine einzelne Spalte | Bereich(โA:Aโ) |
| Fรผr zusammenhรคngende Zellen | Bereich (โA1:C5โ) |
| Fรผr nicht zusammenhรคngende Zellen | Bereich (โA1:C5, F1:F5โ) |
| Fรผr den Schnittpunkt zweier Bereiche | Bereich (โA1:C5 F1:F5โ) (Denken Sie bei Schnittpunktzellen daran, dass es keinen Kommaoperator gibt) |
| Zelle zusammenfรผhren | Bereich (โA1:C5โ) (Um eine Zelle zusammenzufรผhren, verwenden Sie den Befehl โzusammenfรผhrenโ). |
Die Auswahl einer Zelle ist nur der erste Schritt. In der Praxis liest ein Makro den Inhalt einer Zelle und schreibt einen neuen Wert zurรผck.
Wie man Werte mit dem Range-Objekt liest und schreibt
Fast jedes Makro, das auf ein Arbeitsblatt zugreift, fรผhrt eines von zwei Aktionen aus: Es liest einen Wert aus einer Zelle oder es schreibt einen Wert hinein. Beide Aktionen nutzen die Wert-Eigenschaft, und in beiden Fรคllen muss die Zelle vorher ausgewรคhlt sein.
Sub ReadAndWrite() Dim Price As Double Dim Qty As Long ' Read two values out of the sheet Price = Range("B1").Value Qty = Range("B2").Value ' Write the calculated result back Range("B3").Value = Price * Qty ' Fill a whole block in one statement Range("D1:D10").Value = "Guru99" ' Clear only the contents, keeping the formatting Range("F1:F10").ClearContents End Sub
Vier Punkte machen dieses Muster zuverlรคssig.
- Die Auswahl ist nicht erforderlich: Schreiben Range(โB3โ).Value = 10 Das Auswรคhlen der Zelle ist schneller und sicherer als die vorherige Auswahl. Aufgezeichnete Makros enthalten viele .Select-Anweisungen, weil der Rekorder Mausaktionen aufzeichnet, nicht weil der Code dies benรถtigt.
- Wert versus Text: `.Value` gibt die zugrundeliegenden Daten zurรผck, wรคhrend `.Text` die formatierte Zeichenkette zurรผckgibt, die auf dem Bildschirm angezeigt wird und gegebenenfalls durch die Spaltenbreite gekรผrzt werden kann. Verwenden Sie `.Value` in Berechnungen.
- Ganze Blรถcke in einer Zeile: Die Zuweisung zu einem Mehrzellenbereich fรผllt alle Zellen gleichzeitig aus, was wesentlich schneller ist als das Einzelnaufrufen.ping.
- Das Richtige freimachen: ClearContents entfernt nur die Werte, Clear entfernt auch die Formatierung, und Delete entfernt die Zellen und verschiebt die Zellen um sie herum.
Ein Bereich adressiert eine Zelle รผber ihren Buchstaben und ihre Zahl. Eine zweite Eigenschaft adressiert dieselbe Zelle stattdessen รผber zwei Zahlen.
Zelleneigenschaft
รhnlich dem Bereich, in VBA Sie kรถnnen auch die โZelleneigenschaftโ verwenden. Der einzige Unterschied besteht darin, dass sie eine โElementโ-Eigenschaft besitzt, mit der Sie auf die Zellen in Ihrer Tabelle verweisen kรถnnen. Die Zelleneigenschaft ist in einer Programmschleife nรผtzlich.
Zum Beispiel,
Cells.item(Row, Column). Beide folgenden Zeilen beziehen sich auf Zelle A1.
- Cells.item(1,1) ODER
- Cells.item(1,โAโ)
Unterschied zwischen Bereich und Zellen in VBA
Bereiche und Zellen erreichen dieselben Arbeitsblattzellen รผber unterschiedliche Wege; die richtige Wahl macht den Code kรผrzer und leichter lesbar.
| Unterschied | Abdeckung | Die Zellen |
|---|---|---|
| Adressformat | Eine Textzeichenfolge, Bereich(โA1โ) | Zwei Zahlen, Zellen(1, 1) |
| Mehrere Zellen | Ja, Bereich(โA1:C5โ) | Eine Zelle nach der anderen |
| Innerhalb einer Schleife | Erfordert Stringverkettung | Die Zeilennummer kann als Schleifenzรคhler dienen. |
| Ablesbarkeit | Entspricht der Adresse, die Sie in Excel sehen. | Spalte 27 ist schwieriger vorstellbar als AA |
| Kombinierte Nutzung | Range(Cells(1, 1), Cells(5, 3)) erstellt den Bereich A1:C5 aus den Zahlen. | |
Die praktische Regel lautet: Verwenden Sie Range fรผr eine feste Adresse, die Sie auf einen Blick erfassen kรถnnen, und Cells immer dann, wenn eine Zeilen- oder Spaltennummer zur Laufzeit berechnet wird.
Bereichsoffset-Eigenschaft
Die Eigenschaft โBereichsversatzโ wรคhlt Zeilen/Spalten auรerhalb ihrer ursprรผnglichen Position aus. Auf der Grundlage des deklarierten Bereichs werden Zellen ausgewรคhlt. Siehe Beispiel unten.
Zum Beispiel,
Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select
Das Ergebnis ist Zelle B2. Die Offset-Eigenschaft verschiebt Zelle A1 um eine Spalte und eine Zeile. Sie kรถnnen die Werte fรผr RowOffset und ColumnOffset nach Bedarf anpassen. Mit einem negativen Wert (-1) verschieben Sie Zellen nach hinten.
Laden Sie Excel herunter, das den obigen Code enthรคlt
Laden Sie die obige Excel-Datei herunter. Code






