Die Community zu .NET und Classic VB.
Menü

Eine Einführung in Visual Basic for Applications (VBA)

 von 

Übersicht 

Während VBA bereits seit Microsoft Office 97 in fast allen Komponenten der Office-Arbeitsumgebung Anwendung findet, wurde Visio erst mit der Version 2000 um die Visual Basic-Funktionalität erweitert. Dieses Tutorial soll daher einen Einblick in die praxisnahe Verwendung von Visual Basic in Office zeigen.

Verwendung findet VBA insbesondere dann, wenn es darum geht, die Funktionalität einer Office-Komponente zu erweitern. Eine solche Anwendung wäre zum Beispiel die automatische Erstellung einer Tabelle in Excel aus Messwerten. Mit der Einbettung von Formularen können jedoch auch komplette Anwendungen in VBA geschrieben werden. Dabei sollte aber beachtet werden, dass solche Programme immer auf eine Installation von Microsoft Office angewiesen sind.

Die Entwicklungsumgebung (IDE)  

Um zur IDE zu gelangen starten Sie Excel oder Word (alle folgenden Beispiele beziehen sich auf Microsoft Excel (2003), sind aber in Word ebenso durchführbar). Nachdem die Anwendung komplett gestartet ist können Sie über die Tastenkombination ALT + F11 oder über das Menü Extras - Makro die VBA-IDE starten.


Abbildung 1: Aufruf des Visual Basic Editors (IDE)


Abbildung 2: Der Visual Basic Editor (IDE)

Erklärung der einzelnen Komponenten:

  1. Das IDE-Fenster zum Bearbeiten des Codes.
  2. Der Projekt-Explorer, der alle Objekte der Arbeitsmappe, sowie alle beim Start geladenen Add-Ins anzeigt.
  3. Das Eigenschaftenfenster mit allen Eigenschaften der Formulare und Steuerelementen.
  4. Die Userform (Formular), auf dem die Controls (Steuerelemente) der Werkzeugsammlung platziert werden können.
  5. Toolbox (Werkzeugsammlung) mit den Steuerelementen, die in VBA enhalten sind. Die sind zum Beispiel Textbox, Label, Frame, PictureBox und so weiter. Die Toolbox ist erst verfügbar, wenn ein Formular geladen wurde.

Überblick über Formulare, Module und Klassen  

In VBA gibt es drei Arten von Objekten die erzeugt werden können:

  • Formulare (Auch bekannt als "Userforms", vergleichbar mit VB-Formularen)
  • Module
  • Klassen

Formulare

Auf den Formularen können die Steuerelemente aus der Toolbox plaziert werden. Um an den Code des Steuerelementes bzw. des Formulars zu gelangen, reicht ein Doppelklick auf das jeweilige Element, oder man betätigt die Taste F7. Hierbei wird immer die "Standard-Eigenschaft" des Steuerelementes, bzw. des Formulars ausgewählt. Bei Formularen z.B. UserForm_Click(), bei Textboxen Textbox1_Change() etc. Um eine andere Prozedur für das Objekt auszuwählen wählt man im Auswahlfenster der Code-Ansicht per Dropdown (2) die entsprechende Prozedur aus.


Abbildung 3: Die Auswahl von Ereignisprozeduren

Um schnell ein anderes Steuerelement auszuwählen, das Objekt im dazugehörigen Dropdown (1) auswählen. Es können aber auch eigene Prozeduren, Funktionen und Eigenschaften in einem Form angelegt werden.

Module

In Modulen kann man Code ablegen, so z.B. Funktionen die öfters benutzt werden sollen. Mögliche Typen von Code: Prozeduren, Funktionen und Eigenschaften. Diese können sowohl vom Typ Public als auch vom Typ Private sein.

Klassen

Hierzu verweise ich auf das Tutorial Einfache Klassen und Folgende, da der Umgang mit Klassen dort ausführlicher beschrieben wird. Die durchzuführenden Operationen sind fast identisch.

Der Sprachumfang von VBA  

Der Sprachumfang von VBA ist sehr stark an VB angelehnt. Unterschiede gibt es lediglich in der Namensgebung bei Formularen und Steuerelementen. Desweiteren sind die Stringbefehle (InStrRev, Replace, Split, ...) erst seit der VBA Version in Office 2003 verfügbar. Um in den Vorgängerversionen von Office mit diesen Stringfunktionen zu arbeiten empfiehlt es sich, diese von www.xbeat.net/vbspeed zu verwenden.
Es empfiehlt sich, diese in einem gesonderten Modul zu speichern und bei Bedarf über die in der IDE vorhandene Funktion "Importieren eines bereits vorhandenen Moduls" dem Projekt hinzuzufügen.
Siehe auch Ersatz für einige Stringfunktionen

Ein kleines Beispiel in VBA für Excel 2003  

Hier wird ein Formular erstellt, die einen Sprit-Verbrauch Rechner darstellt. Benötigt wird ein Formular (Einfügen - Userform) mit 3 Textboxen, 2 Schaltflächen und 3 Bezeichnungsfeldern.


Abbildung 4: Das Formular für den Spritrechner

In den Codebereich des Formulars gehört folgender Code:

Option Explicit
Private Sub CommandButton1_Click()
  TextBox3.Text = Bere_Verbrauch(TextBox1.Text, TextBox2.Text)
End Sub

Private Sub CommandButton2_Click()
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
End Sub

Listing 1: Der Code für das Formular

Ausserdem wird ein Modul benötigt:

Option Explicit
Public Function Bere_Verbrauch(km As String, liter As String) As String
   
    Dim gefahrene_km As Double
    Dim tank_liter As Double
    Dim ergebnis As Double
    
    gefahrene_km = CDbl(km)
    tank_liter = CDbl(liter) 
    ergebnis = (tank_liter / gefahrene_km) * 100
    Bere_Verbrauch = CStr(ergebnis)
End Function

Listing 2: Der Code für das Modul

Sind alle Eingaben getätigt, so können wir das Makro per F5 starten. Nun wird das Formular angezeigt. Zum Testen geben wir in den beiden Textboxen "Gefahrene km" und "Liter" Werte ein und betätigen den Berechnen Button. Im dritten Textfeld wird nun der Verbrauch pro 100km angezeigt.
Wird der zweite Command Button (Eingabe löschen) betätigt, so werden alle Eingaben gelöscht.
Das Dialogfeld wird über die standardmässige Schliessen-Schaltfläche geschlossen.

Anmerkung der Redaktion: In Microsoft Office Excel ist es möglich, eigene Makrofunktionen direkt in Formeln einzubinden: =A1 + MeineFunktion(2 * B42).
Neben "normalen" Steuerelementen wie Buttons, Textfeldern oder Auswahlboxen, können auch AutoFormen (Rechtecke, Kreise, Linien, usw.) Makros ausführen. Dies ist durch Rechtsklick auf die Auswahlform und "Makro zuweisen", bzw. "Aktionseinstellungen" (Je nach Office-Version) möglich.

Der Makrorecorder  

Um VBA-Code einfacher zu generieren, stellen die Office-Programme einen sog. Makrorecorder bereit. Siehe dazu Verwendung des Makrorecorders.

Feintuning der VBA-IDE  

Unter Extras - Optionen kann man die IDE nach seinem eigenen Geschmack anpassen:


Abbildung 5: Editoreinstellungen

Insbesondere die CheckBox "Variablendeklaration erforderlich" sollte gesetzt sein, damit man keine bösen Überraschungen mit falsch geschriebenen Variablen bekommt.


Abbildung 6: Allgemeine Einstellungen der IDE

Hier kann man die Rasterauflösung der Formulare einstellen. Dies kann zum Beispiel sinnvoll sein, wenn Steuerelemente genau ausgerichtet werden müssen und das Raster nicht passt.

Schlusswort  

Dieses Tutorial bezieht sich auf die generelle Benutzung von VBA in Microsoft Office-Anwendungen. Mehr kann man erfahren, wenn man die Hilfe zu VBA und auch bei Microsoft in der MSDN nachschlägt. Bei Fragen zu dem Artikel können Sie sich an den Autor des Artikels oder auch an das VBA-Forum hier auf ActiveVB wenden.

Hinweis: VBA-Projekte sind nicht eigenständig ohne Office-Anbindung ausführbar!

Ihre Meinung  

Falls Sie Fragen zu diesem Tutorial haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.