Lernpfad
Visual Basic for Applications (VBA) in Excel ist eine Sprache, mit der Benutzer/innen sich wiederholende Aufgaben automatisieren und die Funktionalität von Excel weit über die Standardfunktionen hinaus erweitern können. Egal, ob du ein Anfänger bist, der seine Produktivität steigern will, oder ein fortgeschrittener Benutzer, der komplexe Arbeitsabläufe optimieren möchte - VBA macht alles einfacher.
In diesem Leitfaden erkläre ich grundlegende und fortgeschrittene VBA-Konzepte. Wenn du jedoch neu in Excel bist, solltest du mit den Excel-Grundlagen beginnen, um eine solide Grundlage zu schaffen, bevor du zu VBA übergehst.
Was ist VBA in Excel?
Visual Basic for Applications (VBA) ist eine Programmiersprache, die zur Automatisierung von Aufgaben und zur Erweiterung der Funktionalität von Microsoft Office-Anwendungen verwendet wird. Du kannst es mit Excel, Word, Access und anderen Office-Programmen verwenden, obwohl es wahrscheinlich am meisten für verwendet wird, umbenutzerdefinierte Makros in Excel zu erstellen, was wir uns ansehen werden.
Ich persönlich habe VBA zum ersten Mal verwendet, um einen Wochenbericht zu automatisieren, der früher stundenlang manuell erstellt werden musste. Mit nur ein paar Zeilen Code habe ich den Prozess auf einen einzigen Knopfdruck reduziert und viele Stunden gespart. Von da an wusste ich, dasssich die Investition von in die Beherrschung der Software für die Produktivität enorm auszahlen würde.
Bringe deine Karriere mit Excel voran
Erwerbe die Fähigkeiten, um Excel optimal zu nutzen - keine Erfahrung erforderlich.
Wichtige VBA Excel Begriffe
Bevor du mit VBA arbeitest, musst du seine wichtigsten Begriffe und Konzepte verstehen. Im Folgenden findest du eine Liste der am häufigsten verwendeten Begriffe, auf die du stoßen wirst, wenn du anfängst, Aufgaben zu automatisieren und individuelle Lösungen in Excel zu erstellen.
-
Module sind die Container für VBA-Code, in denen Prozeduren und Funktionen gespeichert werden.
-
Objekte sind die Bausteine von VBA. Sie stellen Elemente wie Arbeitsmappen, Arbeitsblätter und Zellen dar.
-
Prozeduren sind die Codeblöcke, die bestimmte Aufgaben ausführen und oft als Unterprozeduren oder Funktionen kategorisiert werden.
-
Anweisungen sind die Anweisungen innerhalb einer Prozedur, die Excel (oder Word oder Access) mitteilen, welche Aktionen ausgeführt werden sollen.
-
Variablen speichern Daten, die in deinem Code verwendet und manipuliert werden können.
-
Logische Operatoren vergleichen Werte und treffen Entscheidungen auf der Grundlage der Ergebnisse. Dazu gehören Operatoren wie
And
,Or
undNot
.
Erste Schritte mit VBA in Excel
Um mit VBA zu arbeiten, musst du den VBA-Editor aufrufen. Hier wirst du deinen VBA-Code schreiben und bearbeiten. Lass uns durchgehen, wie du dorthin kommst:
Aktivieren der Registerkarte "Entwickler
Der erste Schritt besteht darin, die Registerkarte Entwickler zu aktivieren, die in der Multifunktionsleiste oft versteckt ist. Um dies zu tun:
- Klicke mit der rechten Maustaste auf eine beliebige Stelle in der Multifunktionsleiste.
Ribbon in Excel. Bild vom Autor.
- Wähle das Farbband anpassen... Option.
Passe die Multifunktionsleiste an, um die Registerkarte "Entwickler" zu aktivieren. Bild vom Autor.
- Es wird ein Dialogfeld angezeigt. Markiere dieOption Entwickler und klicke auf OK.
Wähle die Option Entwickler. Bild vom Autor.
Du kannst jetzt einen Entwickler Registerkarte oben in der Multifunktionsleiste.
Die Registerkarte Entwickler ist in der Multifunktionsleiste aktiviert. Bild vom Autor.
Öffnen des VBA-Editors
Sobald die RegisterkarteEntwickler aktiviert ist, kannst du auf den VBA-Editor zugreifen. Dazu klickst du auf die Registerkarte Entwickler und wählst Visual Basic aus den Optionen. Du kannst auch das Tastaturkürzel ALT + F11 verwenden, um den VBA-Editor direkt zu öffnen.
VBA-Editor. Bild vom Autor.
Navigieren in der VBA-Oberfläche
Der VBA-Editor mag auf den ersten Blick einschüchternd wirken, aber er ist einfach zu bedienen. Lasst uns einige Schlüsselbereiche verstehen:
- Code-Fenster ist der Bereich, in dem du deinen VBA-Code schreibst und bearbeitest.
- Der Projekt-Explorer zeigt eine hierarchische Ansicht der Projekte und Module in deiner Arbeitsmappe.
- Fenster Eigenschaften zeigt die Eigenschaften der ausgewählten Objekte an, um ihre Einstellungen anzupassen.
VBA-Schnittstelle in Excel. Bild vom Autor.
VBA-Code in Excel schreiben
Jetzt, wo du dich mit dem VBA-Editor vertraut gemacht hast, ist es an der Zeit, mit dem Schreiben von Code zu beginnen. VBA-Code besteht aus verschiedenen Teilen, wie Unterprozeduren und Funktionen. Das sind Anweisungen, die Excel sagen, was es tun soll. Mach dir keine Sorgen, wenn du noch nie programmiert hast - ich werde dich Schritt für Schritt anleiten.
Ein VBA-Unterprogramm schreiben
Bevor du ein Makro schreibst, musst du eine Makroumgebung erstellen. Befolge dazu die folgenden Schritte:
- Wähle im VBA-Editor Einfügen > Modul. Es wird ein neues Modul mit dem Standardnamen erstellt, Modul1.
Wähle Modul unter der Registerkarte Einfügen. Bild vom Autor.
- Du kannst den Namen des Moduls in den Eigenschaften Fenster ändern.
Benenne das VBA-Modul um. Bild vom Autor.
Da du nun weißt, wie du die Umgebung für die Erstellung eines Makros einrichtest, wollen wir gemeinsam unser erstes Makro erstellen, um eine Meldung anzuzeigen. Standardmäßig wird das Codefenster geöffnet, wenn das Modul erstellt wird. Wenn das in deinem Fall nicht funktioniert, klicke mit der rechten Maustaste auf das von dir erstellte Modul und dann auf Code anzeigen. Es erscheint das Codefenster, in das du deine Makros schreiben kannst.
Hier erstelle ich ein Makro, das die Meldung Hello, World!
anzeigt. Dazu schreibe ich den folgenden Code in das Codefenster:
Sub ShowMessage()
MsgBox "Hello, World!"
End Sub
Hier:
-
Sub ist das Schlüsselwort für ein Unterprogramm, das ein Codeblock ist, der eine bestimmte Aufgabe ausführt. In VBA gibt eine Unterroutine keinen Wert zurück.
-
ShowMessage ist der Name der Unterroutine. Du kannst sie benennen, wie du willst, solange sie den VBA-Namenskonventionen entspricht (z. B. keine Leerzeichen, keine Nummer am Anfang).
-
() werden hier verwendet, um die Parameter der Unterroutine zu definieren. Da für diese Aufgabe keine Parameter benötigt werden, sind die Klammern leer.
-
MsgBox ist eine integrierte VBA-Funktion, die ein Nachrichtenfeld auf dem Bildschirm anzeigt.
-
End Sub Anweisung zeigt das Ende des Unterprogramms an. Alles zwischen
Sub
undEnd Sub
ist der Code, der ausgeführt wird, wenn die Unterroutine aufgerufen wird. -
Zeichenketten in VBA werden in doppelte Anführungszeichen gesetzt. Hier wollen wir, dass die Zeichenfolge
Hello, World!
innerhalb des Nachrichtenfeldes erscheinen soll.
Ein Makro schreiben. Bild vom Autor.
- Jetzt ist es an der Zeit, den Code auszuführen. Verwende die Schnelltaste F5. Wenn du es manuell machen willst, gehe auf dieRegisterkarte Entwickler und wähle Makros. Schlag Laufen.
Wähle die Option Makros auf der Registerkarte Entwickler. Bild vom Autor.
Du kannst jetzt sehen, wie das Nachrichtenfeld auf deinem Excel-Blatt erscheint.
Nachrichtenfeld. Bild vom Autor.
Objekte in VBA verstehen
In VBA kannst du mit Objekten verschiedene Elemente in Excel steuern und Aufgaben für effizientere Arbeitsabläufe automatisieren. Es gibt drei wichtige Objekte: Arbeitsbuch, Arbeitsblatt und Bereich. Lasst uns beide anhand eines praktischen Beispiels verstehen.
Das Workbook-Objekt ist eine beliebige Excel-Datei, die gerade geöffnet ist. Sie ermöglicht es uns, Aktionen wie das Hinzufügen neuer Blätter oder das Speichern bestehender Blätter in der Arbeitsmappe durchzuführen. In diesem Beispiel möchte ich ein Blatt zum aktuell geöffneten Blatt hinzufügen und es dann speichern. Am Anfang hatte ich Sheet1
. Um ein weiteres Blatt hinzuzufügen, schreibe ich den folgenden Code:
Sub AddSheetAndSaveWorkbook()
' Adds a new worksheet to the active workbook
ActiveWorkbook.Sheets.Add
' Saves the workbook
ActiveWorkbook.Save
End Sub
Dieser Code funktioniert genauso wie der vorherige Code, aber ich habe hier Kommentare hinzugefügt. Kommentare beginnen mit '
und haben keinen Einfluss auf deinen Code. Wir fügen sie nur der Einfachheit halber hinzu, um den Code übersichtlicher zu gestalten.
Du kannst sehen, dass jetzt ein weiteres Blatt, Sheet2
, erstellt wurde.
Füge mit VBA ein neues Blatt im bestehenden Blatt hinzu und speichere es. Bild vom Autor.
Das Worksheet-Objekt stellt das derzeit aktive Blatt in Excel dar. Damit kannst du das aktive Blatt ändern oder manipulieren. Ich möchte zum Beispiel den Namen des aktiven Blattes ändern. Dazu gebe ich den folgenden Code ein:
Sub RenameActiveSheet()
' Renames the active sheet to "Sales Report".
ActiveSheet.Name = "Sales Report"
End Sub
Ändern des Namens des Arbeitsblatts mit VBA. Bild vom Autor.
Jetzt wurde Sheet1
in Sales Report
umbenannt.
Umbenennen des Excel-Arbeitsblatts mit VBA. Bild vom Autor.
Das Range-Objekt bezieht sich auf eine bestimmte Gruppe von Zellen oder eine einzelne Zelle, die wir nach Bedarf bearbeiten können. Im folgenden Beispiel wähle ich einen Bereich von Zellen von F3 bis I3 aus und ändere die Hintergrundfarbe. Dazu schreibe ich den folgenden Code:
Sub FormatRange()
' Selects the range from A1 to C6
Range("F3:I3"). Select
' Changes the background color of the selected range to Green
Selection.Interior.Color = RGB(101, 255, 143)
End Sub
Auswählen eines Bereichs und Ändern der Farbe mit VBA. Bild vom Autor.
Du kannst den Unterschied in den Ergebnissen sehen.
Ändern der Farbe mit VBA in Excel. Bild vom Autor.
Variablen in VBA erstellen
Wie andere Programmiersprachen auch, speichern VBA-Variablen zwei Hauptdatentypen: Zahlen und Text. Um sie in VBA zu verwenden, musst du die Variable zunächst mit dem Schlüsselwort deiner Wahl deklarieren, gefolgt von dem Variablennamen und dem Datentyp.
Keyword variableName As DataType
Hier:
-
Keyword
kannDim
,Static
,Public
, undPrivate
sein. -
variableName
bezieht sich auf den Namen, der für diese Variable gewählt wurde (keine Leerzeichen). -
As
wird verwendet, um den Variablentyp zu deklarieren. -
DataType
verweist auf den Variablentyp, z. B.Integer
.
Wenn du mit Variablen arbeitest, musst du dich auch an einige Regeln halten:
- Die Länge muss weniger als 255 Zeichen betragen.
- Zwischen den Zeichen sind keine Leerzeichen erlaubt.
- Der Name darf nicht mit einer Zahl beginnen.
- Verwende keine Punkte im Namen.
Numerischer Datentyp
Numerische Datentypen in VBA werden verwendet, um numerische Werte zu speichern.
Datentyp | Gespeicherte | Bereich der Werte |
---|---|---|
Byte | 1 Byte | Speichert ganze Zahlen von 0 bis 255 |
Integer | 2 Byte | Speichert ganze Zahlen im Bereich von -32.768 bis 32.767 |
Lang | 4 Bytes | Speichert größere ganze Zahlen, die von -2.147.483.648 bis 2.147.483.647 reichen |
Single | 4 Bytes | Speichert Dezimalzahlen mit einfacher Genauigkeit |
Doppelter | 8 Bytes | Speichert Dezimalzahlen mit doppelter Genauigkeit |
Währung | 8 Bytes | Speichert Zahlen mit festen Nachkommastellen |
Variante (Text) | Länge des Textes + 22 Bytes | 0 bis 2 Milliarden Zeichen |
Nicht-numerischer Datentyp
Nicht-numerische Datentypen in VBA speichern Werte, die keine Zahlen sind.
Datentyp | Gespeicherte | Bereich der Werte |
---|---|---|
String | Stringlänge | Speichert Text |
Datum | 8 Bytes | Speichert Datum und Uhrzeit |
Boolesche | 2 Bytes | Speicher Wahr oder Falsch |
Variant | 16 Bytes | Speichert jeden Datentyp und wird verwendet, wenn der Typ nicht im Voraus bekannt ist |
Aufgaben mit VBA-Excel-Makros automatisieren
Makros sind im Wesentlichen eine Reihe von Anweisungen, die in VBA erstellt werden, um sich wiederholende Aufgaben auszuführen. Mit einem Makro kannst du eine Reihe von Aktionen aufzeichnen, z. B. das Formatieren von Zellen, das Kopieren von Daten oder das Ausführen von Berechnungen. Nachdem wir das Makro gespeichert haben, können wir diese Aktionen mit einem einzigen Klick erneut anwenden. Das spart Zeit, vor allem bei der Arbeit mit großen Datensätzen oder Aufgaben.
Wenn du zum Beispiel deine Berichte oft auf die gleiche Weise formatierst, kannst du ein Makro aufzeichnen, das alle notwendigen Formatierungsschritte anwendet, anstatt sie jedes Mal manuell durchzuführen. Später kannst du dieses Makro ausführen, um neue Daten zu formatieren. Wir haben ein paar einfache Beispiele gezeigt, aber stell dir vor, du kannst mehr kleine Aktionen mit nur einem Klick ausführen. Auch wenn du keine Erfahrung im Programmieren hast, kannst du Routineaufgaben automatisieren, um den Arbeitsablauf zu optimieren und die Wahrscheinlichkeit von Fehlern zu verringern, die bei der manuellen Ausführung sich wiederholender Aktionen auftreten können.
Aufzeichnung eines Excel-Makros
Sehen wir uns an, wie du ein Makro aufzeichnen kannst, um einige Formatierungsänderungen vorzunehmen:
- Gehe zum Entwickler Registerkarte > Makro aufzeichnen Schaltfläche.
- Es wird ein Dialogfeld angezeigt. Gib deinem Makro einen Namen, wie ich es getan habe FormatCells.
- Weise auf Wunsch ein Tastenkürzel zu. Ich habe es Strg+S zugewiesen.
- Klicke auf OK um die Aufnahme zu starten.
Nachdem das Makro die Aufzeichnung gestartet hat, führst du die Aktionen aus, die du automatisieren möchtest. In diesem Beispiel nehme ich einige Formatierungsänderungen an einer einfachen Tabelle vor. Wenn du damit fertig bist, gehst du zurück auf die Registerkarte Entwickler und klickst auf die SchaltflächeAufzeichnung stoppen. Unten kannst du das Makro in Aktion sehen.
Aufzeichnung eines Makros mit VBA in Excel. Gif nach Autor.
Wenn du nun einen weiteren Datensatz in einem anderen Blatt hast und die gleiche Formatierung auch in diesem Datensatz haben möchtest, drückst du die von dir erstellte Tastenkombination (in meinem Fall ist es Strg+S), anstatt alles noch einmal zu formatieren . Andernfalls gehst du zu sheet2 > Registerkarte Entwickler > Makros > Ausführen, um es manuell zu machen.
Benutze das Excel-Makro. Gif nach Autor.
Bearbeiten von Excel-Makros
Nachdem du ein Makro aufgezeichnet hast, kannst du seine Aktionen sogar noch optimieren oder anpassen. Und so geht's:
- Gehe zum Entwickler und klicke auf Visuelle Grundlagen.
- Der VBA-Editor wird angezeigt. Suche jetzt im Projekt-Explorer nach der Arbeitsmappe, in der dein Makro gespeichert ist .
- Erweitere den OrdnerModule und doppelklicke dann auf das Modul, das dein Makro enthält. Im Codefenster wird der VBA-Code deines aufgezeichneten Makros angezeigt.
Code des aufgezeichneten Makros in Excel. Bild vom Autor.
Jede Codezeile zeigt die Aktion, die du während der Aufzeichnung durchgeführt hast. Von hier aus kannst du den aufgezeichneten Code ändern, um das Makro nach deinen Wünschen zu gestalten. In meinem Fall habe ich die Selection.Font.Bold
auf False
gesetzt, um die fette Formatierung zu entfernen. Wenn du die Änderungen vorgenommen hast, speichere sie, indem du auf die Schaltfläche Speichern klickst oder drücke Strg+Sund führe den Code aus , um die Änderungen zu übernehmen.
Anpassen des Excel-VBA-Makros. Bild vom Autor.
Nachdem du dein Makro ausgeführt hast, kannst du das Ergebnis sehen - die zuvor fett gedruckten Spalten sind nicht mehr fett.
Ein Makro in Excel verwenden. Bild vom Autor
Benutzerdefinierte Excel-Makros schreiben
Es gibt vielleicht einige fortgeschrittene Aufgaben, bei denen du kein Makro aufzeichnen kannst. In solchen Fällen musst du ein Makro von Grund auf neu schreiben. Ich möchte zum Beispiel die Daten von einem Arbeitsblatt in ein anderes kopieren. So schreibe ich ein benutzerdefiniertes Makro:
- Öffne den VBA-Editor manuell im ersten Blatt oder drücke Alt+F11.
- Füge ein neues Modul ein.
- Schreibe den folgenden Code in das Code-Fenster.
Sub CopyData()
Sheets("Sheet1").Range("B1:E21").Copy Destination:=Sheets("Sheet2").Range("B1")
End Sub
- Speichern Sie das Makro und drücke ausführen..
Jetzt kannst du sehen, dass die Daten von Blatt1 in Sheet2 kopiert wurden.
Ein benutzerdefiniertes Makro mit VBA schreiben. Gif nach Autor.
Schlussgedanken
Von der Automatisierung sich wiederholender Aufgaben bis hin zur Erstellung komplexer Makros - VBA eröffnet eine Welt voller Möglichkeiten in Excel. Während du dich mit den Grundlagen vertraut machst, übst du das Schreiben von Code und erkundest nach und nach die fortgeschrittenen Funktionen von VBA. Vergiss nicht, dass der Schlüssel zum Beherrschen von VBA - oder jeder anderen Programmiersprache - konsequente Praxis und die Bereitschaft zum Experimentieren sind. Um deine Fähigkeiten weiter zu verbessern, solltest du dir diese zusätzlichen Ressourcen ansehen. Die Kurse Datenanalyse in Excel und Excel lernen sind hervorragend geeignet, um mehr über die Funktionen von Excel zu erfahren.
Wenn du deine Programmierkenntnisse über VBA hinaus erweitern willst, bietet dir der Leitfaden How to Become a Programmer in 2024 einen Fahrplan. Schau es dir an, wenn du dich für das Thema interessierst. Außerdem ist der Kurs Finanzmodellierung in Excel perfekt für alle, die an der Erstellung detaillierter Finanzmodelle interessiert sind.
Excel-Grundlagen lernen
Ich bin ein Inhaltsstratege, der es liebt, komplexe Themen zu vereinfachen. Ich habe Unternehmen wie Splunk, Hackernoon und Tiiny Host geholfen, ansprechende und informative Inhalte für ihr Publikum zu erstellen.
Häufig gestellte VBA-Excel-Fragen
Was ist der Zweck der Explicit-Anweisung in VBA?
Explizit stellt sicher, dass alle Variablen vor der Verwendung explizit deklariert werden, um Fehler zu vermeiden und deinen Code wartbarer zu machen.
Wie kann ich meinen VBA-Code mit einem Passwort schützen?
Du kannst deinen VBA-Code schützen, indem du im VBA-Editor > Extras > VBAProjekt Eigenschaften > Registerkarte Schutz aufrufst. Prüfen Sie das Projekt für die Anzeige sperren und gib ein Passwort ein.
Was ist der Unterschied zwischen ActiveWorkbook und ThisWorkbook in VBA?
ActiveWorkbook
bezieht sich auf die Arbeitsmappe, die gerade im Fokus ist und die möglicherweise nicht den VBA-Code enthält. Thisworkbook
bezieht sich auf die Arbeitsmappe, in der sich der VBA-Code befindet, unabhängig davon, welche Arbeitsmappe aktiv ist.
Was sind UserForms in VBA und wie können sie verwendet werden?
UserForms
sind benutzerdefinierte Dialogfelder in VBA, in denen Benutzer Daten eingeben können. Sie können verwendet werden, um interaktive Formulare für die Dateneingabe, die Auswahl oder die Benutzerinteraktion zu erstellen, die eine benutzerdefinierte Oberfläche erfordern.