Was ist VBA?
Die Abkürzung VBA steht für Visual Basic for Applications. Es handelt sich dabei um die Programmiersprache Visual Basic mit speziellen
Ergänzungen für die verschiedenen Anwendungen in Microsoft Office.
Mit Microsoft Word, Microsoft Excel und den anderen Microsoft-Office-Anwendungen können viele alltägliche Aufgaben im beruflichen
und privaten Bereich bereits gut bewältigt werden. Es gibt jedoch häufig:
- Bestimmte wiederkehrende Aufgaben, die durch zusätzliche Programmierung mit VBA schneller gelöst werden können sowie
- spezielle Probleme, die ausschließlich durch VBA-Programme gelöst werden können.
Was sind Makros?
In manchen Fällen reichen auch schon kleine Automatisierungsroutinen, sogenannte Makros, aus. Ein einfaches Makro besteht aus
einer gespeicherten Abfolge von Tätigkeiten, die nacheinander ausgeführt werden. Es wird ein bestimmter Vorgang ausgeführt, zum
Beispiel in Microsoft Excel:
- eine Zahl von einer externen Datenquelle gelesen,
- in eine Tabellenzelle geschrieben,
- diese Zahl mit anderen Zahlen verrechnet,
- als Euro-Wert formatiert und
- innerhalb eines Diagramms grafisch dargestellt.
Ein Makro wird durch die Aufzeichnung der einzelnen Tätigkeiten erstellt und in der Sprache VBA gespeichert. VBA-Programme können
aber über einfache Makros weit hinausgehen und komplexe Abläufe steuern.
Entwickler und Benutzer
In der beruflichen Praxis gibt es häufig zwei Gruppen von Anwendern:
- Entwickler, also erfahrene Microsoft-Office-Anwender, die sich mit der Entwicklung von komplexen VBA-Programmen befassen und
- Benutzer, also Einsteiger in Microsoft Office, die sich nur mit einfachen Themen, zum Beispiel der Eingabe von Daten und der Benutzung von VBA-Programmen, befassen.
Die Entwickler sind im Auftrag der Benutzer tätig. Die Erstellung von VBA-Programmen kann in einer anderen Abteilung desselben Unternehmens
stattfinden. Es kann sich aber auch um extern entwickelte, also eingekaufte Microsoft-Office-Anwendungen handeln.
Was wird besser durch Makros und VBA?
Eine schnellere Problemlösung durch VBA ergibt sich:
- weil der Entwickler durch die Programmierung mit VBA schneller mit der Erstellung seiner Microsoft-Office-Anwendung fertig ist und
- weil die Ergebnisse für den Benutzer schneller berechnet werden können.
Es folgen einige typische Szenarien für VBA (hier am Beispiel von Microsoft Excel), die Ihnen zeigen sollen, wozu Sie VBA nutzen
können und welche Vorteile sich daraus ergeben:
- Es sollen große Mengen an Daten aus einer Textdatei eingelesen werden. Nur der Aufbau der Daten ist bekannt, nicht aber die Menge. Außerdem sollen, abhängig vom aktuellen Inhalt der Textdatei, nur bestimmte Daten gelesen werden. Nach dem Einlesen sollen die Daten verarbeitet, formatiert, zusammengefasst und zur Verdeutlichung grafisch dargestellt werden
- Es soll ein Diagramm aus einer Tabelle erstellt werden. Die aktuelle Größe und der Inhalt der Tabelle sollen die Art des Diagramms und seine Darstellung bestimmen.
- Benutzer haben nach dem Aufrufen der Microsoft-Excel-Anwendung ein Dialogfeld vor sich. Darin nehmen sie, abhängig von der aktuellen Situation, bestimmte Einstellungen vor, treffen die gewünschte Auswahl der Daten und starten dann deren weitere Verarbeitung.
- Es ergeben sich regelmäßig (zum Beispiel jede Woche oder jeden Monat) Daten, die auf ähnliche (nicht identische) Art und Weise weiterverarbeitet werden müssen.
- Die Verarbeitung bestimmter Daten ist komplex, muss in mehreren Schritten und in der richtigen Reihenfolge ablaufen. Mit VBA können Sie die Koordination und die Durchführung der einzelnen Schritte vereinfachen.
- Benutzern sollen nach dem Aufrufen von Microsoft Excel nur bestimmte Funktionalitäten zur Verfügung stehen. Ihr spezielles Microsoft Excel kann durch VBA gleichzeitig:
- eingeschränkt werden, wodurch es im Idealfall zu weniger Fehlbedienungen kommt und
- erweitert werden, wodurch ihnen spezielle Funktionen und Abläufe zur Verfügung stehen, die über Microsoft Excel hinausgehen.
- Es sollen vorhandene Microsoft-Excel-Anwendungen geändert werden, die zu einem früheren Zeitpunkt von anderen Entwicklern im Unternehmen erstellt oder eingekauft wurden. Diese werden zur Bewältigung der laufenden Geschäftsprozesse bereits regelmäßig eingesetzt. Da sich bestimmte Geschäftsprozesse geändert haben, müssen die zugehörigen Microsoft-Excel-Anwendungen ebenfalls erweitert und angepasst werden.
Objekte, Eigenschaften und Methoden
VBA bietet neben den Sprachbestandteilen eine umfangreiche Objektbibliothek. Darin befinden sich viele Objekte mit ihren Eigenschaften und Methoden. Diese Objekte
ermöglichen einen Zugriff auf die Bestandteile der unterschiedlichen Microsoft-Office-Anwendungen. Bei Microsoft Word kann zum Beispiel auf Dokumente, Absätze,
Worte und einzelne Zeichen zugegriffen werden. Bei Microsoft Excel kann auf Arbeitsmappen, Tabellenblätter, Zeilen, Spalten, einzelne Zellen und Inhalte von Zellen
zugegriffen werden.
Ein Beispielprogramm
In diesem Abschnitt folgt ein Beispiel für VBA mit Excel. Falls Sie noch keine Programmiererfahrung haben, soll dieses Beispiel Ihnen einen typischen
Einsatzzweck verdeutlichen: Die automatisierte Erstellung und Änderung eines Diagramms auf Basis einer Tabelle. Falls Sie bereits Kenntnisse in einer
anderen Programmiersprache besitzen, finden Sie im Code und den kurzen Kommentaren viele bekannte Elemente, aber auch VBA-spezifische Elemente.
Natürlich ist dieses Demo-Beispiel noch nicht zum gründlichen Erlernen von VBA geeignet. An dieser Stelle verweise ich auf mein
Buch beim Rheinwerk-Verlag.
Es geht um die minimalen und die maximalen Temperaturen, die an sieben aufeinanderfolgenden Tagen an einem Ort geherrscht haben. Die Werte sehen Sie in Abbildung 1.
Abbildung 1: Beispielwerte in einer Tabelle
Mithilfe der VBA-Prozedur DiagrammErstellen() (siehe Code weiter unten) werden die Werte in einem eingebetteten Liniendiagramm neben der Tabelle dargestellt, siehe Abbildung 2.
Abbildung 2: Tabelle mit eingebettetem Liniendiagramm
Mithilfe der VBA-Prozedur DiagrammAendern() (siehe Code weiter unten) werden das gesamte Diagramm und viele einzelne Bestandteile des Diagramms aufwendiger formatiert, siehe Abbildung 3.
Abbildung 3: Eingebettetes Liniendiagramm mit Formatierungen
Es folgt der Code der VBA-Prozedur DiagrammErstellen() in der Excel-Mappe "Temperatur.xlsm":
Sub DiagrammErstellen()
' Verweis auf ein Container-Objekt, hier für ein eingebettetes Diagramm
Dim CO As ChartObject
' Verweis auf ein Diagramm-Objekt
Dim CH As Chart
' Hinzufügen eines weiteren Container-Objekts zur Liste der Container-Objekte
Set CO = ThisWorkbook.Worksheets("Tabelle1"). _
ChartObjects.Add(200, 10, 300, 150)
' Erstellung eines Diagramm-Objekts innerhalb des Container-Objekts
Set CH = CO.Chart
' Typ des Diagramms: Linie
CH.ChartType = xlLine
' Quelldaten des Diagramms
CH.SetSourceData Worksheets("Tabelle1").Range("A1:C8")
End Sub
Es folgt der Code der VBA-Prozeduren DiagrammAendern() und Aendern(), ebenfalls in der Excel-Mappe "Temperatur.xlsm":
Sub DiagrammAendern()
Dim CO As ChartObject
Dim CH As Chart
' Zugriff auf erstes Element der Liste der Container-Objekte
Set CO = ThisWorkbook.Worksheets("Tabelle1").ChartObjects(1)
' Größe und Ort des Container-Objekts
CO.Left = 220
CO.Top = 30
CO.Width = 400
CO.Height = 300
' Zugriff auf Diagramm-Objekt innerhalb des Container-Objekts
Set CH = CO.Chart
' Aufruf der Prozedur zum Ändern eines Diagramms
Aendern CH
End Sub
Sub Aendern(CH As Chart)
' Diagrammfläche ändern
CH.ChartArea.Interior.Color = vbCyan
' Zeichnungsfläche ändern
CH.PlotArea.Interior.Color = vbYellow
' Titel hinzufügen und einstellen
CH.HasTitle = True
CH.ChartTitle.Text = "Temperatur"
' Legende ändern
With CH.Legend
.Interior.Color = vbYellow
.Border.Color = vbBlue
.Border.Weight = xlThick
End With
' Kategorienachse: Beschriftung hinzufügen, Format einstellen
With CH.Axes(xlCategory)
.HasTitle = True
.AxisTitle.Text = "Datum"
.TickLabels.NumberFormatLocal = "TT.MM."
End With
' Werteachse: Beschriftung hinzufügen, Format einstellen
With CH.Axes(xlValue)
.HasTitle = True
.AxisTitle.Text = "Grad"
.MinimumScale = 5
.MaximumScale = 35
End With
' Datenreihe ändern, Markierungen setzen
With CH.SeriesCollection(1)
.Border.Color = vbRed
.MarkerStyle = xlMarkerStyleCircle
.MarkerForegroundColor = vbRed
.MarkerBackgroundColor = vbRed
End With
' Datenpunkt ändern
With CH.SeriesCollection(1).Points(3)
.Border.Color = vbBlue
.ApplyDataLabels xlShowValue
.MarkerStyle = xlMarkerStyleSquare
.MarkerForegroundColor = vbBlue
.MarkerBackgroundColor = vbBlue
End With
End Sub
Aktuelle IT Jobs
» IT-Administrator (m/w/d)» Wirtschaftsinformatiker*in als Stv. Teamleitung Vertriebs-IT (m/w/d) Schwerpunkt: Mobile Ticketing» Informatiker (m/w/d) als Software Engineer (m/w/d) Shop Floor Automation» IT-Systemadministrator (m/w/d)» Softwareingenieur/Experte Level 2 (m/w/d) im Bereich Digitalisierung (Dekarbonisierung)» alle Jobs anzeigen