VBA ist eine objektorientierte Programmiersprache. VBA steht für Visual Basic For Applications. Es handelt sich um eine Integration von Visual Basic mit den Microsoft Office-Anwendungen (MS Excel, MS PowerPoint, MS Access, MS Word und MS Outlook).
Durch das Ausführen von VBA in Microsoft Office-Anwendungen kannst du wiederkehrende Aufgaben automatisieren. Die Methoden von Excel-VBA und seine Objekte drehen sich um die zu manipulierenden Excel-Objekte wie Zellen oder Bereiche sowie Tabellenzeilen und -spalten.
Ein Objekt hat Eigenschaften und Methoden. Eine Eigenschaft ermöglicht es, dem Objekt einen Wert oder ein Merkmal zuzuweisen.
Eine Methode ermöglicht es, eine Aktion mit dem Objekt durchzuführen. Wenn wir uns z. B. ein Objekt vorstellen, das eine Zelle in VBA Excel bezeichnet, könnte eine seiner Eigenschaften die Schriftart oder die Farbe der Zelle ändern, das ist eine Eigenschaft. Eine Methode könnte diese Zelle löschen, das ist eine Aktion. Man nennt eine Eigenschaft oder eine Methode eines VBA-Objekts, indem man das Objekt von der Eigenschaft oder der Methode durch einen Punkt im Code trennt: Objekt.Eigenschaft=Wert.
Wie du weißt, zeichnet ein automatisches Makro, das du mit Excel erstellst, deine Aktionen auf, damit du sie mit einem einfachen Klick auf eine Schaltfläche reproduzieren kannst. Diese Aktionen werden tatsächlich in Excel VBA aufgezeichnet. Was wir vorschlagen, ist, triviale Makros zu erstellen, um den so erzeugten Code zu betrachten und zu verstehen.
Wir werden die grundlegenden Objekte kennenlernen und die wichtigsten Eigenschaften und Methoden erlernen, um einen optimalen Start zu haben.
Aktivierung des Entwickler-Reiters :
Wir beginnen also damit, den Entwickler-Tab zu aktivieren:
- Gehe zu Datei
- Dann auf Option
- Dann wähle Multifunktionsleiste anpassen und du findest die Registerkarte Entwickler, die nicht markiert ist.
- Aktiviere ihn einfach und klicke auf Ok.
Jetzt ist der Entwickler-Tab verfügbar und auch um die Entwicklerumgebung zu öffnen, klicke auf das Visual Basic-Symbol im Entwickler-Tab.
Wie erstellt man ein automatisches Makro?
Wir werden ein erstes Makro erstellen. Das Ziel ist es, den erzeugten Code zu sehen. Eine Zelle ist ausgewählt, normalerweise A1 als Standard:
- Gehe zum Entwicklermenüband und klicke dann auf die Schaltfläche Makro aufzeichnen,
- Im Dialogfeld benenne das Makro: test_mef zum Beispiel,
- Aus der vorgeschlagenen Liste diese Arbeitsmappe behalten, um das Makro zu speichern,
- Klicke auf Ok, um die Aufzeichnung zu starten.
Von diesem Punkt an müssen wir die unbedingt notwendigen Aktionen durchführen, da Excel uns aufzeichnet.
- Klicke auf die Schaltfläche G in der Multifunktionsleiste Start, um den Text fett zu machen,
- Wähle eine rote Füllfarbe ebenfalls mit der Multifunktionsleiste Start,
- Dann stelle eine weiße Schriftfarbe ein,
Wir können nun die Aufnahme stoppen.
Klicke auf die Schaltfläche Aufnahme stoppen,
Bisher existiert das Makro nur als VBA-Code. Wir werden die Schaltfläche erstellen.
- Klicke auf das Menü Datei und wähle dann Optionen aus der Liste,
- Wähle im Dialogfeld die Kategorie Symbolleiste für den Schnellzugriff aus,
- In der Mitte wähle die Kategorie Makros,
- Wähle dann das Makro test_mef aus der Liste unten und klicke auf Hinzufügen,
- Klicke unten auf Ändern, um ein Bild für die Schaltfläche auszuwählen,
- Klicke zweimal auf Ok, um die beiden Dialogfenster zu bestätigen,
Die Schaltfläche erscheint nun in der Schnellzugriffsleiste über dem Menüband.
Gib einen Text in eine Zelle ein und bestätige ihn mit STRG + Enter, um die Zelle aktiv zu halten,
Klicke auf die neue Schaltfläche in der Schnellzugriffsleiste,
Wie du siehst, werden die vom Makro definierten Formatierungseigenschaften sofort auf die ausgewählte Zelle angewendet.
Wie erstellt man ein Makro über den VBA-Code?
Wir werden das Makro schreiben und ihm einen neuen Namen geben. In diesem Stadium wird es ähnlich wie das vorherige Makro behandelt, wir werden nur einige Werte ändern.
- Kopiere im Code-Editor das gesamte Makro (von Sub bis End Sub),
- Füge es unten auf der Modulseite ein,
- Ändere den Namen nach der Sub in: mef_blue,
Wir haben ein neues Makro mit einem neuen Namen, das aber im Moment genau die gleichen Aktionen wie das vorherige Makro ausführt. Wir möchten, dass der neue Code die Zelle zunächst blau mit dunkelgrauem Text färbt. Es reicht also, wenn wir uns nur auf die Werte der Komponenten der Funktion RGB() konzentrieren.
In einem zweiten Schritt möchten wir, dass dieses Makro in der Lage ist, einen Rand auf die Auswahl anzuwenden. Ein helles Blau kann mit den Komponenten: 40,180,255 erreicht werden. Ebenso kann ein dunkles Grau mit den Komponenten: 76,76,76 erreicht werden. (Diese Informationen erhalten wir durch das Paint-Werkzeug).
Ändere die Farbkomponenten der RGB()-Funktionen auf diese Weise im Code dieses neuen Makros,
Der Code-Editor ermöglicht es uns, sie zu testen:
Du müsstest zuerst eine Zelle mit Text auf dem Blatt markieren, dann zum Code-Editor zurückkehren und irgendwo zwischen den Prozedurgrenzen des zweiten Makros klicken, um die Einfügemarke dort zu platzieren. Auf diese Weise weiß die Software, welchen Code sie ausführen muss, wenn sie danach fragt.
Schließlich musst du auf die Schaltfläche mit dem grünen Pfeil in der Symbolleiste des Code-Editors klicken.
Auf den ersten Blick passiert nichts. In Wirklichkeit geht es sehr schnell.
Arbeitsmappenblatt anzeigen,
Du siehst, dass die Zelle, die vorausgewählt war, tatsächlich zugewiesen wurde. Wir haben soeben ein Makro ausgeführt. Wir möchten nun einen dicken Rand festlegen. Für die Auswahl durch den Code könnten wir daher über den Objekt-Explorer und das Eigenschaftenfenster des Code-Editors gehen. Beide sind über das Menü Ansicht erreichbar. Aber es ist noch einfacher, ein automatisches Makro zu erstellen und den Code abzurufen.
Dazu musst du eine Zelle in dem Blatt der Excel-Arbeitsmappe auswählen.
Klicke dann in der Entwickler-Multifunktionsleiste auf die Schaltfläche Makro aufzeichnen und nenne es „Rand“. Klicke dann auf Ok, um die Aufzeichnung zu starten.
Mit der Schaltfläche Rand im Menüband Start einen dicken äußeren Rand festlegen, dann im Menüband Entwickler auf die Schaltfläche Aufzeichnung beenden klicken und schließlich im Code-Editor auf Zurück klicken.
Unter dem Makro mef_blue() siehst du eine neue Prozedur. Es handelt sich um das Makro bord(), das wir soeben erstellt haben. Sein Code sieht sehr kompliziert aus. In Wirklichkeit handelt es sich um eine systematische Wiederholung derselben Eigenschaften, die auf dieselbe Weise eingestellt werden. Excel behandelt die Ränder unabhängig voneinander. Zuerst den linken Rand: Selection.Borders(xlEdgeLeft), dann den oberen Rand: Selection.Borders(xlEdgeTop) usw. Während es genügt, der Eigenschaft Borders des Selection-Objekts keine Parameter anzugeben, damit VBA Excel versteht, dass wir von der äußeren Kante sprechen.
Markiere und kopiere den ersten With-Block und füge ihn in das Makro mef_blue() unter der Anweisung Selection.Interior.Color= RGB(40, 180, 255) ein,
Entferne den Parameter in den Klammern der Eigenschaft Borders sowie dessen Klammern,
So bezeichnen wir den gesamten Rand der Auswahl und nicht nur eine ihrer Seiten.
- Lösche die Zeile .TintAndShade = 0, da sie wie oben beschrieben unnötig ist,
- Ersetze die Zeile .ColorIndex = 0 durch .Color = RGB(76, 76, 76),
.ColorIndex = 0 stellt die Randfarbe auf Schwarz ein. Wir ziehen die Eigenschaft .Color vor, die es dir ermöglicht, mithilfe der Funktion RGB() eine bestimmte Farbe einzustellen. In diesem Fall stellen wir die Farbe des Rahmens auf die gleiche Farbe wie die des Textes ein.
- Wähle eine Zelle auf dem Arbeitsblatt aus,
Kehre zum Code-Editor zurück und platziere die Einfügemarke innerhalb der Grenzen der Prozedur mef_blue(), - Klicke auf den Lesepfeil, um den Code auszuführen,
Die Zelle erscheint mit den vorherigen Formatierungsattributen und zusätzlich mit dem Rand.
Zurück auf dem Blatt erscheint die Schaltfläche neben der vorherigen. Wenn du Zellen markierst und sie anklickst, wird das Makro auf die gleiche Weise ausgeführt wie das vorherige. Wir werden nun die vorherige Arbeit bereinigen.
- Gehe zurück in den Code-Editor,
Markiere alle Codezeilen der Prozedur bordure(), von Sub bis End Sub, - Lösche sie, indem du die Entf-Taste auf deiner Tastatur drückst,
Da sein Code entfernt wurde, wird das Rand-Makro nicht mehr in der Liste der Makros angeboten, insbesondere bei der Erstellung von Schaltflächen.
Die Objekte Range und Cells: Wie werden sie verwendet?
Was gibt es Besseres als ein automatisches Makro, um das Objekt zu kennen, mit dem man eine bestimmte Zelle bestimmen und manipulieren kann? Denn bis dahin bedeutete das Selection-Objekt, dass wir auf einen vorausgewählten Bereich einwirken. Und wenn wir auf bestimmte Zellen einwirken wollen, die anhand ihrer Koordinaten referenziert werden, wie machen wir das dann? Diese Frage wollen wir beantworten, indem wir ein Makro anweisen, uns aufzuzeichnen, während wir eine bestimmte Zelle auswählen.
Aktiviere die Multifunktionsleiste „Entwickler“ auf dem Blatt der Excel-Arbeitsmappe,
Klicke auf die Schaltfläche Makro aufzeichnen,
Benenne es z. B. Zellen und klicke auf Ok, um es zu starten,
Wähle mit der Maus z. B. die Zelle G10 aus,
Klicke im Entwicklermenüband auf die Schaltfläche Aufzeichnung beenden,
Den Code-Editor anzeigen, indem du auf die Schaltfläche Visual Basic in der Entwickler-Multifunktionsleiste klickst,
Wenn du dein neues Makro nicht im Code-Editor siehst, wurde es in einem neuen Modul geschrieben.
Doppelklicke dann im Projektfenster auf der linken Seite auf den Eintrag Modul2,
Der überaus einfache Code des Makros wird angezeigt. Du bemerkst die Verwendung des Range-Objekts, das als Parameter in Anführungszeichen die Zellbezüge enthält, wie sie in Excel identifiziert werden. Range bezeichnet ursprünglich einen Bereich von Zellen, aber wenn nur eine Zelle angegeben ist, wird nur auf diese Zelle gezeigt. In Verbindung mit dem Range-Objekt haben wir die Methode Select. Wir erinnern uns: Eine Methode führt eine Aktion aus und weist keiner Eigenschaft einen Wert zu. Hier ist die Aktion also das Auswählen der Zelle oder des Bereichs, die/der angegeben wurde.
Das Range-Objekt hat also einige einfach zu entdeckende Eigenschaften und Methoden, mit denen du Zellen anpassen und parametrisieren kannst.
Gib im Editor unter der ersten Codezeile Range(‚G10‘) ein,
Wenn du den Punkt (.) hinter dem Range-Objekt eingibst, rufst du eine Eigenschaft oder eine Methode des Objekts auf. Deshalb wird bei der Eingabe eine kleine Dropdown-Liste angezeigt. Sie bietet dir alle Methoden des Objekts (mit einem grünen Symbol davor) und alle seine Eigenschaften (mit einem grauen Symbol davor). Wenn du z. B. die ersten Buchstaben der Eigenschaft eingibst, zeigt dir die Liste alle Eigenschaften an, die mit diesem Buchstaben beginnen.
Tippe auf diese Weise die Eigenschaft Font ein oder wähle sie aus und tippe dann einen neuen Punkt (.) ein,
Damit rufst du die Eigenschaften auf, die von der Eigenschaft Font abgeleitet sind.
Tippe oder wähle die Eigenschaft Size für die Schriftgröße,
Setze den Wert auf 12 (=12),
Wie bereits erwähnt, dient das Range-Objekt zunächst dazu, einen Bereich von Zellen zu bezeichnen. Wie bei den Excel-Funktionen musst du nur die Referenzen, getrennt durch das Doppelpunktsymbol (:), für einen Bereich von zusammenhängenden Zellen angeben.
Schließlich gibt es noch das Cells-Objekt, mit dem du eine Zelle anhand ihrer Zeilen- und Spaltennummer bezeichnen kannst. Dieses Objekt erwartet zwei Parameter, die Nummer der Zeile und die Nummer der Spalte. Für die Zelle C10 übergeben wir ihm also die Werte 10 für die Zeile und 3 für die Spalte. Da dieses Objekt Zellen manipuliert, hat es die gleichen Eigenschaften und Methoden wie die Objekte Select und Range.
Wir hoffen, dass dir dieser Artikel gefallen hat. Abonniere unseren Newsletter, um immer auf dem Laufenden über Tech-, Daten- und KI-Nachrichten zu bleiben.