StartFormeln & Funktionen › VBA-Funktion

Eigene Funktion mit VBA schreiben (UDF)

Wenn dir die eingebauten Excel-Funktionen nicht reichen, kannst du dir mit VBA eine eigene Funktion (User Defined Function, kurz UDF) schreiben. Sie lässt sich danach genau wie SUMME oder WENN direkt in einer Zelle eintragen.

Funktion vs. Makro

Ein Makro (Sub) führt Aktionen aus – es klickt, formatiert, speichert. Eine Funktion (Function) gibt dagegen einen Wert zurück und wird wie eine Formel in einer Zelle verwendet. Nur Function-Prozeduren stehen im Funktionsassistenten unter der Kategorie „Benutzerdefiniert" zur Verfügung.

Beispiel: Rabatt-Staffel als eigene Funktion

Angenommen, ab einer Bestellmenge von 50 Stück gibt es 10 % Rabatt, ab 100 Stück 15 %. Das lässt sich zwar auch mit WENN lösen, wird aber unübersichtlich – als Funktion bleibt es lesbar und wiederverwendbar. Öffne den VBA-Editor mit Alt+F11, füge über Einfügen → Modul ein neues Modul ein und trage ein:

Function Rabatt(Menge As Double) As Double If Menge >= 100 Then Rabatt = 0.15 ElseIf Menge >= 50 Then Rabatt = 0.1 Else Rabatt = 0 End If End Function

Zurück in Excel rufst du die Funktion wie jede andere auf:

AB
1MengeRabatt
2300%
37510%
415015%
=RABATT(A2) → 0%

Schritt für Schritt

  1. Alt+F11 öffnet den VBA-Editor.
  2. Rechtsklick auf die Arbeitsmappe im Projekt-Explorer → Einfügen → Modul.
  3. Den Code der Funktion eintippen (Copy & Paste aus dieser Seite funktioniert genauso).
  4. Zurück in Excel wechseln (Alt+F11) und die Funktion wie =RABATT(A2) eintragen.
  5. Die Datei als xlsm (makrofähige Arbeitsmappe) speichern – sonst geht der Code beim Speichern verloren.
Achtung

Eine VBA-Funktion darf standardmäßig keine Zellen verändern oder andere Aktionen auslösen (z. B. Formatieren, Meldungsfenster). Sie darf nur einen Wert zurückgeben. Für Aktionen brauchst du ein Makro (Sub), das du über eine Schaltfläche oder Tastenkombination startest.

Profi-Tipp

Trage einen kurzen Kommentar über die Funktion ein (Zeile beginnt mit '). So siehst du auch Monate später auf einen Blick, was die Funktion tut – wichtig, sobald mehrere eigene Funktionen in einem Modul gesammelt werden.

Häufige Fehler


Verwandte Themen