Visual Basic for Applications

Was ist VBA und wozu braucht man es

VBA*, kurz für „Visual Basic for Applications“, ist eine Scriptsprache welche zur Steuerung und Erweiterung von Programmabläufen in Microsoft Office Produkten (Excel, Word, PowerPoint, Access, etc.) entwickelt wurde. Sie ist seit Excel 95 fester Bestandteil der Office-Produktreihe und leitet sich, wie der Name es schon sagt, von Microsofts Visual Basic ab.

Mit VBA* ist es möglich Excel- oder Worddateien so zu erweitern, dass sie annähernd den gleichen Funktionsumfang wie klassisch programmierte Software bieten. Es verfügt über einen Formulareditor, mit welchem Formulare mit Buttons, Listboxen und vielen weiteren Ein- und Ausgabetools per Drag & Drop erstellt werden können. Des Weiteren kann mit VBA* auf die Funktionalität der Office-Produkte direkt zugegriffen werden. So ist es zum Beispiel möglich, aus Word oder Excel heraus, via Outlook Emails zu versenden ohne dieses dafür öffnen zu müssen. Der Funktionsumfang ist durch Verweise erweiterbar und bietet eine fast schon unüberschaubare Anzahl an Funktionen. 

 

Mein Weg zum ersten VBA-Tool

Mein erstes mit VBA* erstelltes Tool ist noch gar nicht so alt. Ich nutzte bis dahin schon eine gefühlte Ewigkeit die „normalen“ Funktionen der Office-Produkte. Listen und Kalkulationen in Excel sind ja bekanntlich auch ohne VBA* problemlos umsetzbar. Vor ca. 4 Jahren gab es dann aber in meiner Abteilung die Anforderung eine Liste zum Erfassen aller verfügbaren Fahrzeuggetriebe, welche an den Motorenprüfständen zum Einsatz kommen, zu erstellen. Diese sollte den aktuellen Lagerort, die Getriebelaufzeit (Betriebsdauer) und ein paar weitere Objekteigenschaften, übersichtlich zur Verfügung stellen. Außerdem sollte eine Art „Getriebelebenslauf“ mitgeschrieben werden, um auch eventuelle Beschädigungen rückwirkend nachvollziehen zu können.

Da mein Status als Hobby-Programmierer bei uns in der Abteilung bereits bekannt war, stand recht schnell fest, dass ich mich um die Umsetzung dieser Aufgabe kümmern werde. Weil es bis zu diesem Zeitpunkt gar keine Erfassung der Getriebe gab, musste ich eine Lösung finden, welche alle gewünschten Funktionen zur Verfügung stellt und, um auch akzeptiert und genutzt zu werden, trotz allem einfach zu bedienen ist. Eine weitere Schwierigkeit bestand darin, dass in unserer Entwicklungsabteilung aus Sicherheitsgründen keine klassischen Anwendungen auf den Rechnern installiert werden dürfen. Damit waren klassische IDEs, welche am Ende eine *.exe Datei zur Verfügung stellen, schon mal nicht einsetzbar. Da allerdings auf allen Computern Office installiert ist, war schnell klar das ich die Übersicht damit realisieren werde.

Das Problem dabei war nicht die Erfassung der Getriebe, sondern die gewünschten Funktionen wie die Historie der Getriebebewegungen, oder eine schnelle Visualisierung der im Lager verfügbaren Getriebe. Dies könnte man zwar mit Copy & Paste ebenfalls umsetzen, da die Liste aber auch von normalen Anwendern bedient werden sollte, würde dies höchstwahrscheinlich zu Lücken im Verlauf und Chaos in den Listen führen. Um dies zu vermeiden, erstellte ich mittels  VBA* verschiedene Formulare, mit denen Getriebe an Lager- oder Einsatzorte bewegt, Getriebedaten geändert oder neue Getriebe hinzugefügt werden konnten. Damit in der Übersicht nicht wahllos Eintragungen geändert werden können, sperrte ich außerdem das Dokument für die normale Bearbeitung. Da die Bearbeitung nun ausschließlich über meine VBA*-Formulare erfolgte, war es ein leichtes jede Aktion in einem eigenen, ausgeblendeten Tabellenblatt als Log-Datei mitzuschreiben. 

Die Getriebeliste wurde von mir seitdem um mehrere Funktionen, wie unterschiedliche Benutzergruppeanmeldungen oder eine Getriebeauswahlunterstützung nach Motortyp erweitert und ist noch täglich in Benutzung. 

 

Screenshot der Getriebeliste inkl. geöffnetem Formular für die Getriebebewegung

 

Wo finde ich in die VBA-IDE

Die Programmierumgebung für VBA* ist bei der Standardkonfiguration von Excel, Word und Co. zwar immer mit installiert, doch für den „normalen“ Nutzer ausgeblendet. Man muss über die Einstellungen erst die Entwicklertools einblenden lassen, damit man in den VBA*-Editor wechseln kann. Dafür geht man wie folgend, am Beispiel von MS-Excel gezeigt, vor.

 

Im geöffneten Excel klickt man auf den Menüeintrag „Datei“, um anschließend unten links den Menüpunkt „Optionen“ auszuwählen.

 

Ansicht nach dem Klicken auf Datei inkl. dem Button für die Optionen

 

In den geöffneten Einstellungen wählt man auf der linken Seite den Eintrag „Menüband anpassen“ aus, um anschließend auf der rechten Seite unter „Hauptregisterkarten“ in die noch leere Checkbox vor „Entwicklertools“ einen Haken zu setzen und die Änderung anschließend mit dem Klick auf OK zu bestätigen.

 

Übersicht Excel-Optionen mit ausgewähltem Reiter „Menüband anpassen“

 

Nun hat man im Menüband der Hauptmenüleiste einen neuen Menüeintrag namens „Entwicklertools“ zur Auswahl. Hier findet man alles was man zum Erstellen von Anwendungen in Excel benötigt. Man kann hier zum Beispiel Buttons direkt auf den Arbeitsblättern positionieren, per Auto-Teach Makros automatisch aufzeichnen, Add-Ins nachinstallieren oder per Klick auf „Visual Basic“ die VBA* Entwicklungsumgebung öffnen. 

 

neu eingefügter Menüeintrag „Entwicklertools“

 

Diese Entwicklungsumgebung ist in verschiedene Bereiche unterteilt. Auf der linken Seite befinden sich die Projektordner. Die Struktur besteht aus 3 Ordnern, welche alle eine bestimmte Funktion erfüllen.

  • Microsoft Excel Objekte:
    • Beinhaltet alle Arbeitsblätter und den Eintrag „DieseArbeitsmappe“ über welche Dokumentenweite Methoden wie zum Beispiel „Sub workbook_open()“ deklariert werden können.
  • Formulare:
    • Beinhaltet alle in VBA erstellten Formulare. Die Programm-Logik hinter den Formularen wird ebenfalls direkt im Formular erstellt.
  • Module: 
    • Beinhaltet erstellten oder automatisch angelernten Programmcode. Hier können Methoden deklariert werden, welche später durch die Formulare oder durch eine Aktion auf dem Arbeitsblatt selbst ausgeführt werden.  

 

Die VBA Entwicklungsumgebung

 

Hiermit hat man nun alles was man braucht um die ersten Schritte zum eigenen VBA* Programm erledigen zu können. Die Syntax von VBA ist stellenweise etwas gewöhnungsbedürftig, doch sollte sich jeder mit ein wenig Programmiererfahrung schnell zurecht finden. Das Internet bietet zum Thema VBA* außerdem mehr als genügend Beispiele und Hilfestellungen mit welchen es, mit ein wenig Übung, auch nach kurzer Zeit möglich ist, komplexere Programme umzusetzen. 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.