Wie wird eine Benutzerdefinierte Funktion angelegt?

Benutzerdefinierte Funktionen werden in der Programmiersprache VBA (Visual Basic for Applications) erstellt.

Wir wollen lernen, Benutzerdefinierte Funktionen zu erzeugen, ohne große Programmierkenntnisse zu besitzen.

Soweit möglich wollen wir den Makro-Recorder dazu benutzen.

Aber: Der Makro-Recorder zeichnet Aktionen auf, die der Anwender mit irgendwelchen Objekten vornimmt. Er erstellt sog. Sub-Prozeduren.

Wir benötigen so was Ähnliches, sog. Function-Prozeduren. Solche Prozeduren führen eine Berechnung durch und liefern das Ergebnis zurück.

Mit Sub-Prozeduren kann man eine Anwendung steuern, also Objekte (z.B. eine EXCEL-Tabelle) verändern, Function-Prozeduren dagegen liefern einen Wert zurück.

Function-Prozeduren spielen eine wichtige Rolle in der Programmierung; sie können aber genauso gut in einem EXCEL-Arbeitsblatt benutzt werden, und auf diesen Aspekt wollen wir uns in diesem Workshop konzentrieren.

Beispiel: Wir wollen eine Function EUROFAKTOR() entwickeln, die zur Umrechnung von DM in EUR und umgekehrt benutzt werden kann.

Makro Aufzeichnung starten.  Es öffnet sich das Dialogfeld Makro Aufzeichnen.
Geben Sie folgenden erläuternden Text ein: „Diese Funktion liefert den Umrechnungsfaktor von DM zu EURO!“ (vgl. Abbildung 211)

Abbildung 211, Makro-Aufzeichnung starten

Wählen Sie o.k. und beenden dann die Aufzeichnung sofort wieder. Öffnen Sie mit Alt+F11 den Visual Basic Editor.
EXCEL hat einen neuen Modul in Ihr Projekt eingefügt. In diesem Modul befindet sich das Ergebnis der Aufzeichnung: Ein leerer Prozedurrumpf einer Sub-Prozedur, die lediglich Kommentare enthält.

Abbildung 212, Prozedurrumpf erstellt vom Makro-Recorder

In diesem Prozedurrumpf ändern wir das Schlüsselwort „Sub“ zu „Function“. „End Sub“ wird automatisch zu „End Function“.

Wir fügen die Codezeile ein: „Eurofaktor =1.95538“.
Achtung: Der Dezimaltrenner ist ein Punkt! (Weil wir uns mit Visual Basic sozusagen im Angelsächsischen Kulturkreis bewegen!)

Abbildung 213, Die komplette Function-Prozedur "Eurofaktor"

Das war schon alles! EXCEL hat die neue Funktion in die Kategorie „Benutzerdefiniert“ aufgenommen. Wenn Sie den Funktions-Assistenten aufrufen, finden Sie die Funktion aufgelistet (vgl. Abbildung 214 und Abbildung 215).

Sie können diese neue Funktion von nun an in einer EXCEL-Tabelle benutzen.
Geben Sie in eine Zelle die Formel ein:
= Eurofaktor()
Die Zelle zeigt das Ergebnis: 1,95583.
(Beachten Sie den Dezimaltrenner, es ist das Komma, wir befinden uns wieder auf deutschem Boden!)

Abbildung 214, Der Funktions-Assistent kennt die neue Funktion bereits

Achtung: Text, der in das Dialogfeld „Makro Aufzeichnen“ eingegeben wird (s. Abbildung 211), erscheint
          a) als Kommentarzeile der Prozedur (s. Abbildung 212) und
          b) im Funktionsassistent zur Erklärung der Funktion (auch wenn nichts aufgezeichnet wurde und die Sub zu Function umbenannt wurde!) (s. Abbildung 214 und Abbildung 215)
Spätere Eingabe von Text als Kommentar in die Prozedur wird nicht mehr in das Dialogfeld übernommen!

 

Abbildung 215, Dialog zur Eingabe der Argumente der neuen Funktion

More:

Benutzerdefinierte Funktionen mit Argumenten