Eine anleitung zum arbeiten mit arbeitsmappen in vba
In Excel ist eine Arbeitsmappe eines der wichtigsten Excel-Objekte, und es ist auch wichtig zu verstehen, wie man Arbeitsmappen beim Schreiben von VBA-Codes verwendet und darauf verweist.
In diesem Tutorial erfahren Sie alles, was Sie wissen müssen. Als Erstes müssen Sie jedoch die Objekte verstehen, die bei der Arbeit mit Arbeitsmappen in VBA eine Rolle spielen.
Sachen zu wissen:
- Binders-Objekt
- Binder-Objekt
Diese beiden Objekte klingen gleich, es gibt jedoch einen grundlegenden Unterschied zwischen ihnen.
Binders-Objekt
In VBA stellt das Workbooks-Objekt die Sammlung von Arbeitsmappen dar, die in Microsoft Excel geöffnet sind. Stellen Sie sich vor, Sie haben zehn Aktenschränke gleichzeitig geöffnet. Und Sie möchten auf die einzige Arbeitsmappe unter ihnen verweisen. In diesem Fall müssen Sie das Arbeitsmappenobjekt verwenden, um über seinen Namen auf diese Arbeitsmappe zu verweisen.
Binder-Objekt
In VBA stellt das Arbeitsmappenobjekt eine einzelne Arbeitsmappe unter allen derzeit in Microsoft Excel geöffneten Arbeitsmappen dar. Der beste Weg, dies zu verstehen, besteht darin, darüber nachzudenken, eine Variable als Binder zu deklarieren, den Sie verwenden möchten, um auf einen bestimmten Binder im Code zu verweisen.
Nützliche Links : Registerkarte „Entwickler“ hinzufügen | Visual Basic-Editor | Führen Sie ein Makro aus | Persönliche Makros-Arbeitsmappe
Verweisen Sie auf eine Arbeitsmappe in VBA
Um mit Arbeitsmappen in VBA arbeiten zu können, müssen Sie zunächst wissen, wie Sie in einem Makro auf eine Arbeitsmappe verweisen. Das Schöne daran ist, dass es mehrere Möglichkeiten gibt, auf eine Arbeitsmappe zu verweisen. Und in Zukunft werden wir jeden von ihnen erkunden.
1. Mit Namen
Der einfachste Weg, auf eine Arbeitsmappe zu verweisen, ist der Name. Angenommen, Sie möchten die Arbeitsmappe Book1.xlsx aktivieren. In diesem Fall sollte der zu verwendende Code wie folgt lauten:
Das Verweisen auf eine Arbeitsmappe mit ihrem Namen ist ganz einfach: Sie müssen den Namen angeben, und das war’s. Aber eines müssen Sie beachten : Wenn eine Arbeitsmappe nicht gespeichert wird, müssen Sie nur den Namen verwenden. Und wenn es registriert ist, müssen Sie den Namen mit der Erweiterung verwenden.
2. Nach Nummer
Wenn Sie eine Arbeitsmappe öffnen, weist Excel dieser Arbeitsmappe eine Indexnummer zu, und Sie können diese Nummer verwenden, um auf eine Arbeitsmappe zu verweisen. Die Arbeitsmappe, die Sie zuerst geöffnet haben, hat die Indexnummer „1“, die zweite die Indexnummer „2“ und so weiter.
Diese Methode erscheint Ihnen möglicherweise weniger real, da es schwierig ist zu wissen, welche Arbeitsmappe sich auf welcher Indexnummer befindet. Es gibt jedoch eine Situation, in der diese Methode sehr nützlich ist, und zwar eine Schleife durch alle geöffneten Arbeitsmappen.
3. Von ThisWorkbook
Bei dieser Arbeitsmappe handelt es sich um eine Eigenschaft, die Ihnen hilft, auf die Arbeitsmappe zu verweisen, in der Sie Code schreiben. Nehmen wir an, Sie schreiben den Code in „Book1“ und verwenden „ThisWorkbook“, um die Arbeitsmappe zu speichern. Selbst wenn Sie jetzt den Namen der Arbeitsmappe ändern, müssen Sie den Code nicht ändern.
Der obige Code zählt die Anzahl der Blätter in der Arbeitsmappe, in die dieser Code geschrieben wird, und zeigt ein Meldungsfeld mit dem Ergebnis an.
4. Von ActiveWorkbook
Wenn Sie auf eine aktive Arbeitsmappe verweisen möchten, müssen Sie die Eigenschaft „ActiveWorkbook“ verwenden. Diese Eigenschaft nutzen Sie am besten, wenn Sie sicher sind, welche Arbeitsmappe jetzt aktiviert ist. Oder Sie haben die Arbeitsmappe, an der Sie arbeiten möchten, bereits aktiviert.
Der obige Code aktiviert zunächst die Arbeitsmappe „Book1“ und verwendet dann die Eigenschaft „Aktive Arbeitsmappe“, um die aktive Arbeitsmappe zu speichern und zu schließen.
Greifen Sie auf alle Methoden und Eigenschaften zu
Wenn Sie in VBA auf ein Objekt verweisen, können Sie mit VBA auf die Eigenschaften und Methoden zugreifen, die mit diesem Objekt bereitgestellt werden. Ebenso verfügt das Arbeitsmappenobjekt über Eigenschaften und Methoden. Um darauf zuzugreifen, müssen Sie zunächst die Arbeitsmappe definieren und dann einen Zeitraum eingeben .
Sobald Sie einen Punkt (.) eingeben, wird die Liste der Eigenschaften und Methoden angezeigt. Nun müssen Sie sich fragen, wie Sie feststellen können, welches eine Eigenschaft und welches eine Methode ist.
Hier ist der Trick. Wenn Sie genau hinsehen, können Sie vor jedem Namen auf der Liste einen sich bewegenden grünen Ziegelstein und eine graue Hand erkennen. Daher haben alle Eigenschaften diese graue Hand vor dem Namen und die Methoden haben einen beweglichen grünen Ziegelstein.
Zum Beispiel, um eine Methode mit einer Arbeitsmappe zu verwenden
Stellen Sie sich vor, Sie möchten eine Arbeitsmappe (eine Methode) schließen . Sie müssen „Schließen“ eingeben oder aus der Liste auswählen.
Danach müssen Sie Startklammern eingeben, damit IntelliSense weiß, welche Argumente Sie festlegen müssen.
Mit der close-Methode müssen Sie drei Argumente definieren. Wie Sie sehen, sind alle diese Argumente optional und können bei Bedarf ignoriert werden. Aber einige Methoden haben keine Argumente (zum Beispiel: activate)
Zum Beispiel, um eine Eigenschaft mit einer Arbeitsmappe zu verwenden
Stellen Sie sich vor, Sie möchten die Blätter der Arbeitsmappe „Buch1“ zählen. In diesem Fall müssen Sie die Eigenschaft „Sheets“ und dann deren zusätzliche count-Eigenschaft verwenden.
Im obigen Code legen Sie, wie gesagt, book1 fest, dann bezieht sich die Eigenschaft sheet auf alle Blätter und dann die Eigenschaft count, um sie zu zählen. Wenn Sie diesen Code ausführen, wird ein Meldungsfeld mit dem Ergebnis angezeigt.
Verwenden der „WITH“-Anweisung mit der Arbeitsmappe
In VBA gibt es eine „With“-Anweisung, die Ihnen dabei helfen kann, mit einer Arbeitsmappe zu arbeiten und gleichzeitig ein Makro effizient zu schreiben. Sehen wir uns das folgende Beispiel an, in dem Sie drei verschiedene Codezeilen mit derselben Arbeitsmappe, d. h. ActiveWorkbook, haben.
Mit der „WITH“-Anweisung können Sie nur einmal auf die aktive Arbeitsmappe verweisen und alle Eigenschaften und Methoden verwenden, die Sie im Code haben.
- Zuerst müssen Sie mit der Startanweisung „With ActiveWorkbook“ beginnen und die Anweisung mit „End With“ beenden.
- Danach müssen Sie den Code zwischen dieser Anweisung schreiben, den Sie im obigen Beispiel haben.
Wie Sie im obigen Code sehen können, haben wir mit der WITH-Anweisung auf den von ActiveWorkbook verwiesen und dann sollten alle Eigenschaften und Methoden verwendet werden.
Sub vba_activeworkbook_with_statement() With ActiveWorkbook .Sheets.Add Count:=5 .Charts.Visible = False .SaveAs ("C:UsersDellDesktopmyFolderbook2.xlsx") End With End Sub
Lassen Sie mich Ihnen ein einfaches und konkretes Beispiel geben, damit Sie alles verstehen. Stellen Sie sich vor, Sie bitten mich, in Zimmer 215 zu gehen, um die Wasserflasche zu holen, und wenn ich zurückkomme, schicken Sie mich erneut in Zimmer 215, um einen Stift zu holen, und schicken mich dann noch einmal, um einen Laptop zu holen. Hier ist die Sache: Alle Dinge, die Sie mir aufgetragen haben, befinden sich in Zimmer 215. Es wäre also besser, wenn Sie mich in Zimmer 215 schicken und mir sagen würden, dass ich alle drei Dinge auf einmal holen soll.
Lesen Sie: Mit – Ende mit
Deklarieren Sie eine Variable als Arbeitsmappe
Manchmal müssen Sie eine Variable als Binder deklarieren, um sie weiter im Code zu verwenden. Nun, es erfordert nichts Besonderes von Ihnen.
- Verwenden Sie die DIM-Anweisung (declare).
- Schreiben Sie den Variablennamen.
- Legen Sie den Variablentyp auf Arbeitsmappe fest.
Umgang mit Fehlern
Wenn Sie in VBA mit einem oder mehreren Arbeitsmappenobjekten arbeiten, müssen Sie möglicherweise auch Fehler behandeln. Nehmen wir ein Beispiel für den Fehler „Laufzeitfehler 9: Index außerhalb des gültigen Bereichs“ . Dieser Fehler kann aus verschiedenen Gründen auftreten.
- Die Arbeitsmappe, auf die Sie verweisen möchten, ist nicht geöffnet.
- Vielleicht hast du den Namen falsch geschrieben.
- Die Arbeitsmappe, auf die Sie sich beziehen, ist noch nicht gespeichert und Sie verwenden die Erweiterung mit diesem Namen.
- Wenn Sie die Indexnummer verwenden, um auf eine Arbeitsmappe zu verweisen, und die von Ihnen verwendete Nummer größer ist als die Gesamtzahl der geöffneten Arbeitsmappen.