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.

  • ๐ŸŽฏ Definition: Das Bereichsobjekt verweist auf eine einzelne Zelle, eine Zeile, eine Spalte, eine Auswahl oder einen 3D-Bereich.
  • ๐Ÿงฌ Hierarchie: Eine vollstรคndig qualifizierte Referenz liest Anwendung, Arbeitsmappen, Arbeitsblรคtter, dann Bereich.
  • ๐Ÿท๏ธ Eigenschaften und Methoden: Eine Eigenschaft speichert Informationen รผber das Objekt, und eine Methode fรผhrt eine Aktion wie Auswรคhlen oder Zusammenfรผhren aus.
  • ๐Ÿ”ข Zelleneigenschaft: Mit Cells(Row, Column) kann eine Zelle รผber ihre Nummer angesprochen werden, was fรผr eine Programmschleife geeignet ist.
  • โœ๏ธ Lesen und Schreiben: Die Value-Eigenschaft ruft sowohl den Inhalt einer Zelle ab als auch schreibt neue Inhalte zurรผck.
  • โ†”๏ธ Offset-Eigenschaft: Der Offset verschiebt eine Referenzzelle um eine festgelegte Anzahl von Zeilen und Spalten von ihrer Ausgangszelle.

Excel VBA-Bereichsobjekt

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

  1. Das Schlรผsselwort โ€žReichweiteโ€œ.
  2. Klammern, die dem Schlรผsselwort folgen
  3. Relevanter Zellbereich
  4. 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.

Einzelne Zelle mithilfe der Worksheet.Range-Eigenschaft

Schritt 2) In diesem Schritt

  • Klicken Sie auf Einzelne Zelle mithilfe der Worksheet.Range-Eigenschaft .
  • 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.

Einzelne Zelle mithilfe der Worksheet.Range-Eigenschaft

Schritt 3) Im nรคchsten Schritt

  • Klicken Sie auf die Schaltflรคche Makro Einzelne Zelle mithilfe der Worksheet.Range-Eigenschaft aus dem oberen Menรผ. Es รถffnet sich das Fenster unten.
  • Klicken Sie in diesem Fenster auf die Schaltflรคche โ€žBearbeitenโ€œ.

Einzelne Zelle mithilfe der Worksheet.Range-Eigenschaft

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

Einzelne Zelle mithilfe der Worksheet.Range-Eigenschaft

Schritt 5) Speichern Sie nun die Datei Einzelne Zelle mithilfe der Worksheet.Range-Eigenschaft und fรผhren Sie das Programm wie unten gezeigt aus.

Einzelne Zelle mithilfe der Worksheet.Range-Eigenschaft

Schritt 6) Sie werden sehen, dass Zelle โ€žA1โ€œ nach der Ausfรผhrung des Programms ausgewรคhlt ist.

Einzelne Zelle mithilfe der Worksheet.Range-Eigenschaft

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

Hรคufig gestellte Fragen

Verwenden Sie Cells(Rows.Count, 1).End(xlUp).Row. Diese Methode beginnt am Ende von Spalte A und springt bis zur letzten Zelle mit Daten. Dies ist zuverlรคssiger als UsedRange, nachdem Zeilen gelรถscht wurden.

Jeder Lese- oder Schreibvorgang findet zwischen VBA und Excel statt. Laden Sie den Bereich mit einer einzigen Zuweisung in ein Array, verarbeiten Sie das Array im Speicher und schreiben Sie es anschlieรŸend mit einer einzigen Anweisung zurรผck. Das Deaktivieren der Bildschirmaktualisierung kann ebenfalls hilfreich sein.

In der Regel handelt es sich um eine ungรผltige Adresse, einen nicht existierenden Tabellenblattnamen oder den Versuch, einen Bereich auf einem nicht aktiven Tabellenblatt auszuwรคhlen. Geben Sie das Tabellenblatt als Referenz an oder aktivieren Sie das Tabellenblatt zuerst.

Ja. Fรผgen Sie den aufgezeichneten Code ein, und ein KI-Assistent ersetzt jedes Select- und Selection-Paar durch einen direkten, vollstรคndig qualifizierten Range-Verweis. Fรผhren Sie beide Versionen auf einer Kopie aus und vergleichen Sie das Tabellenblatt, bevor Sie es behalten.ping der Wechsel.

Ja. Beschreiben Sie das Ziel, z. B. alle ausgefรผllten Zeilen in den Spalten A bis D des Datenblatts. Ein KI-Assistent liefert dann den passenden Bereichsausdruck. Testen Sie diesen anhand einer kleinen Stichprobe, bevor Sie ihn auf Live-Daten anwenden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: