Kapitel 3. Funktionen in VBA

Inhaltsverzeichnis
3.1. Programmieren und Testen
3.2. Ein weiterführendes Beispiel

3.1. Programmieren und Testen

Dieses Kapitel zeigt in mehreren Schritten, wie in Excel benutzerdefinierte Funktionen programmiert, getestet und genutzt werden können. Dazu wird der VBA-Editor mit Alt-F11 gestartet. Dann wird über das Menü Einfügen ein neues Modul erstellt. In dem Modulfenster geben Sie folgende Funktion ein:


Beispiel 3-1. VBA-Funktion Rechteckfläche

  Function Rechteckflaeche(L, B As Double) As Double         (1)
     Rechteckflaeche = L * B                                 (2)
  End Function
  
(1)
Diese Funktion erhält zwei Parameter (L und B), die beide als reelle Zahlen (Double) vereinbart werden. Der Rückgabewert der Funktion ist ebenfalls eine reelle Zahl.
(2)
Die Rückgabe erfolgt über den Namen der Funktion. Die Funktion gibt den Wert zurück, der zuletzt zugewiesen wurde.

Wechseln Sie zu Excel und testen Sie die Funktion. Dazu rufen Sie den Funktionsassistenten auf und wählen dort die Kategorie der benutzerdefinierten Funktionen. Dort sollte nun die Funktion Rechteckfläche zu sehen sein. Wählen Sie die Funktion aus und führen Sie einen Test mit einfachen Eingabewerten durch.

Nun können Sie eine weitere Funktion für den Rechteckumfang programmieren. Dazu wechseln Sie wieder in die VBA-Entwicklungsumgebung und geben dort folgende Funktion ein:


Beispiel 3-2. VBA-Funktion Rechteckumfang

  Function Rechteckumfang(L, B As Double) As Double
     Rechteckumfang = 2 * (L + B)
  End Function

Man bemüht sich darum, jede Funktion wiederverwendbar zu gestalten und zu dokumentieren. Im nächsten Beispiel werden deshalb die Variablen in kurzen Kommentaren beschrieben. Kommentare leitet man unter VBA mit einem Hochkomma ein. Im VBA-Code werden sie grün dargestellt. Die Kommentare dienen zum besseren Verständnis des Codes und sind ein wichtiges Hilfsmittel bei der Zusammenarbeit mit anderen Programmierern.

In der Praxis kann die Funktion Rechteckfläche auch zur Flächenermittlung einer zusammengesetzten Fläche verwendet werden. Genausogut kann man das Ergebnis der Funktion von einer anderen Fläche subtrahieren. Zwei Möglichkeiten zur Berechnung der Fläche eines scharfkantigen Winkelprofils werden im nächsten Beispiel gezeigt:


Beispiel 3-3. VBA-Funktion Winkel

  
  ' Funktion zum Berechnen der Fläche eines Winkels
  '
  ' B  Breite des Winkels
  ' H  Höhe des Winkels
  ' t  Stärke des Winkels
  
  ' Version 1: 
  ' unter Verwendung der vorher programmierten Funktion
  ' hier nutzt man den Vorteil, eine fertig getestete Funktion
  ' zur Verfügung zu haben...
  '
  
  Function WF1(B As Double, H As Double, t As Double) As Double
     WF1 = Rechteckfläche(t, H) + Rechteckfläche((B - t), t)
  End Function
  
  
  
  ' Version 2 
  ' Neuberechnung der Fläche
  ' 
  
  Function WF2(B As Double, H As Double, t As Double) As Double
     WF2 = (t * H) + (B - t) * t
  End Function
  


Abbildung 3-1. Winkelprofil


Das folgende Kontrollbeispiel fasst den ersten Teil noch einmal zusammen. Sie haben die Aufgabe, Umfang und Fläche des gegebenen Profils zu bestimmen. Die Funktionsnamen und Parameter sind vorgegeben. Die Lösung entnehmen Sie bitte dem Anhang A.


Beispiel 3-4. VBA-Funktionen für ein Doppel-T-Profil

  
  Function dt_profil_flaeche(H, B, t, s As Double) As Double
     'hier bitte den Quelltext der Funktion programmieren...
  End Function
  
  
  Function dt_profil_umfang(H, B, t, s As Double) As Double
     'hier bitte den Quelltext der Funktion programmieren...
  End Function


Abbildung 3-2. Doppel-T-Profil


Eine Funktion kann auf verschiedene Weise aktiv werden: durch Aufruf aus einer anderen Funktion, nach dem Druck auf eine Schaltfläche, nach anderen Maus- oder Tastaturereignissen oder (wie getestet) über den Funktionsassistenten.

Zu den Funktionen gibt es einige syntaktische Regeln. Funktionsnamen beginnen immer mit einem Buchstaben (nie mit einer Zahl). Sie dürfen aber danach Zahlen und/oder Buchstaben enthalten. Sonderzeichen und Umlaute dürfen im Namen von Funktionen nicht verwendet werden, das gilt ganz besonders für die Zeichen, die in VBA eine besondere Bedeutung haben. Für Funktionsnamen dürfen keine reservierten Wörter der Sprache VBA verwendet werden.

VBA versteht prinzipiell jeden korrekten Funktionsnamen. Die fertiggestellten Funktionen laufen also auch dann, wenn man sie mit F01() bis F20() bezeichnet. Bitte beachten Sie aber, dass Sie aus Gründen der Übersichtlichkeit jede Funktion mit einem eigenen, aussagekräftigen Namen vereinbaren und die wichtigsten Parameter bzw. Eigenschaften Ihrer Funktionen dokumentieren sollten. Das dient zuerst zu Ihrer eigenen Sicherheit und wenn Sie an größeren Projekten im Team arbeiten, ist es ohnehin Pflicht. Alle anderen Mitglieder des Teams müssen anhand Ihrer Beschreibung mit den Funktionen umgehen können.