Verständnis des Excel-Objektmodells
Swipe um das Menü anzuzeigen
Jede einzelne Zeile VBA, die Sie jemals in Excel schreiben, ist ein Satz über Objekte: Etwas existiert (eine Application, ein Workbook, ein Worksheet, ein Range), und Sie lesen entweder eine seiner Eigenschaften aus oder fordern es auf, eine seiner Methoden auszuführen. Sobald diese Hierarchie verstanden ist, besteht der Rest der Sprache größtenteils aus Vokabular.
Die Hierarchie lesen
- Application — die gesamte laufende Instanz von Excel; der oberste Punkt jeder Hierarchie;
- Workbooks — die Sammlung aller geöffneten Dateien; eine einzelne ist ein Workbook, z. B.
Section_1_VBA_Intro.xlsm; - Worksheets — die Sammlung der Registerkarten innerhalb eines Workbooks; eine einzelne ist ein Worksheet, z. B. "Employees";
- Range — eine Zelle, ein Zellblock, eine ganze Zeile oder eine ganze Spalte;
- Cells / Value — die tatsächlichen Daten, die sich in einem Range befinden.
Sie müssen selten die gesamte Kette von Application abwärts eintippen — VBA geht davon aus, dass Sie das aktive Workbook und das aktive Worksheet meinen, sofern Sie nichts anderes angeben — aber das explizite Benennen von Objekten unterscheidet fragilen Code von zuverlässigem Code. Vergleichen Sie diese beiden Arten, dieselbe Anweisung zu schreiben:
' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000
Die zweite Version funktioniert weiterhin, selbst wenn der Benutzer drei andere Arbeitsmappen geöffnet und ein anderes Blatt ausgewählt hat – eine Gewohnheit, die enorm wichtig wird, sobald Ihre Makros mehr als nur ein paar Zeilen umfassen. Die Schreibweise ThisWorkbook.Worksheets("SheetName") wird im weiteren Verlauf des Kurses ständig verwendet.
Navigation von Objektbeziehungen im Direktfenster
Das Direktfenster (Ansicht → Direktfenster oder Ctrl+G im VBE; ^ ⌘ G auf dem Mac) ermöglicht das Testen einer einzelnen Codezeile, ohne sie in ein Sub einzubetten.


Geben Sie eine Zeile mit einem Fragezeichen am Anfang ein und drücken Sie Enter, um das Ergebnis sofort zu sehen. Probieren Sie dies mit Section_1_VBA_Intro.xlsm aus:
?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count
Die dritte Zeile führt CurrentRegion ein, eine Eigenschaft, die sich von einer einzelnen Zelle auf den gesamten zusammenhängenden Datenblock um sie herum ausdehnt.
Aufgabe
- Im Direktfenster eine Zeile schreiben, die die Position von
Olivia Brown(Zeile 4) ausgibt, ohne zuerst auf die Zelle zu klicken — direkte Referenz über die Objekt-Hierarchie. - Eine zweite Zeile schreiben, die ausgibt, wie viele Zeilen sich in der Employees-Tabelle befinden, unter Verwendung von
CurrentRegion.Rows.Count.
Referenzieren Sie es als ThisWorkbook.Worksheets("Employees").Range("D4").Value — Zeile 4 ist Olivia Brown, Spalte D ist Position.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen