Excel: Eigene Funktionen mit VBA erstellen

Funktionen mit mehreren optionalen Parametern

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wie erstellt man Funktionen, bei denen nicht alle Parameter eingegeben werden müssen? In diesem Video finden Sie die Antwort.
05:51

Transkript

Sie wissen, dass in Excel einige Funktionen genau einen Wert verlangen. Sie wissen, dass in Excel einige Funktionen mehrere Werte, das heißt, mehrere Argumente oder Parameter verlangen. Vielleicht wissen Sie auch, dass in Excel einige Funktionen existieren, bei denen Parameter optional sind. Beispielsweise bei der Kategorie Datum und Uhrzeit gibt es eine Funktion, Wochentag, die liefert eben einen Wochentag. Wochentag verlangt einen Typ. Wenn ich ihm keinen Typ gebe, dann wird der Wochentag nach dem US-amerikanischen Standard berechnet, das heißt, ich erhalte einen Wochentag von Sonntag bis Samstag berechnet. Wenn ich hier die Zahl 2 eintrage, dann habe ich die europäische Norm, dann rechnet er Nummer 1 für Montag, Nummer 2 für Dienstag und so weiter. Oder meine Funktion Nachschlagen und Verweisen, meine Funktion Sverweis hat einen optionalen Parameter, was Sie auch hier erkennen können, weil er nicht fett ist, Bereich_Verweis. Wenn ich hier nichts eintrage, dann nimmt er als Standardwert wahr, ansonsten nimmt er falsch. Oder beispielsweise Text, die Funktion Links schneidet von links Buchstaben raus. Wenn ich ihn nicht sage, wie viele Buchstaben, schneidet er genau einen raus, ansonsten trage ich die Anzahl der Buchstaben hier ein. Hier in nicht fetter Schrift festgehalten sind die sogenannten optionalen Parameter, die ich eintragen kann, aber nicht eintragen muss. Und wie realisieren wir das in VBA? Eigentlich nicht schwierig, wenn man weiß, wie es geht, ist alles einfach. Ich wechsele in der Registerkarte Entwicklertools zurück zu meinen Makros, Virtual Basic, und markiere eine Funktion, die ich bereits erstellt habe, hier diesen ZahlenText-Funktion. Ich markiere sie, weiter runter, bis hier hin, kopiere die Funktion, am besten in ein neues Modul, dann finde ich sie auch besser, Einfügen Modul, füge sie hier ein. Erstes Achtung, meine neue Funktion muss unbedingt einen neuen Namen erhalten beispielsweise ZahlenTextOpt wie Optional. Zweitens, weil ich jetzt den Funktionsnamen geändert habe, weil am Ende an den Funktionsnamen einen Wert übergeben wird, muss ich natürlich den Funktionsnamen hier unten auch nochmal einfügen. Das heißt, aus ZahlenText wird natürlich ZahlenTextOpt. Die optionalen Parameter werden einfach in der Liste hinten dran geschrieben. Das heißt, ich könnte hier, als kleines dummy Beispiel, ein Index As String hinten zu fügen, Achtung, so ist es natürlich noch kein optionaler Parameter, so muss ich beide Werte eingeben. Damit es ein optionaler, also ein variabler, ein nicht zwingend erforderlicher Wert ist, muss ich vorne dran das Schlüsselwort Optional hinzufügen und jetzt kann ich ihn eintragen, muss ich aber nicht. Was machen wir hier in dem Beispiel? Wenn Benutzer, Benutzerin 2 eingetragen hat, überprüfen wir if index = "u" muss man wissen, wird ein u eingetragen, Then, damit er auch noch ein großes U eintragen kann, ändere ich den Index in lcase vor dem Index. Egal ob er groß oder klein macht, ich wandele es in kleinen Buchstaben um. Wenn das Ergebnis der Schreibung nun ein kleines u ist, Then dann hätte ich ganz gerne als ZiffernText, das hier unten, kopieren, einfügen, einen "zwo", ansonsten ist alles ok, lassen wir es, wie es war, also ein Else, lass mal bitte die Zahl 2 und If nicht vergessen. Wunderbar! So können wir also den optional Parameter nehmen und hier verwenden und einbauen in unserer Funktion. Schauen wir uns das Ganze an. Ich schreibe eine dummy Zahl, 1234, ich hole mit meinem Funktions-Assistent Formeln fx. aus meiner Kategorie benutzerdefiniert meine Funktion hier ZahlenTextOpt, habe ich sie genannt, Ok. Ich kann nun auf die Zahl los gehen, hier sehen Sie 1234. Ups noch ein paar Leerstellen drin, ok, es interessiert mich im Moment nicht. Würde ich mit Ok das bestätigen, liefert er schon ein Ergebnis, obwohl er eigentlich einen zweiten Parameter hat. Trage ich aber zusätzlich noch ein Index ein, Index ist ein u, wie umgangssprachlich, ich muss hier raushüpfen, Tab, dann sehe Sie, sie macht aus der zwei ein zwo. Wunderbar, Ok. Und jetzt habe ich einen anderen Wert. Leider ein kleiner Knackpunkt von VBA, von den selbsterstellten Funktionen ist, es gibt leider keine Möglichkeit ihm zu sagen, also dem Anwender mitzuteilen, dass Index optional, dass Index nicht verpflichtend ist. In Excel wird das durch einen nicht fetter Schrift gekennzeichnet. Der Anwender musste es hier wissen. Man musste irgendwelche Hilfetexte hinzufügen oder man musste es ihm sagen: Du kannst den Wert reinschreiben, musst du es aber nicht. Wenn du es nicht tust, dann gehe ich von einer Standardfunktion aus. Zusammenfassen: Optionale Parameter werden durch das Schlüsselwort Optional gekennzeichnet und Achtung ganz wichtig, optionale Parameter müssen am Ende der Reihenfolge sein, das heißt, ich darf nicht Optional Index mit dem optionalen Argumenten anfangen und dann die verpflichtende nehmen, sondern zuerst die verpflichtenden, ganz wichtig, und dann kann ich einen oder natürlich auch mehrere optionale Werte hier einfügen.

Excel: Eigene Funktionen mit VBA erstellen

Schreiben Sie Ihre eigenen Excel-Funktionen. Als erfahrener Excel-Anwender lernen Sie, wie Sie mithilfe von VBA Berechnungen mittels selbst erstellter Funktionen automatisieren.

3 Std. 4 min (33 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:21.01.2015

Im Training wird Excel 2013 benutzt. Die Vorgehensweisen sind aber für alle Windows-Versionen von Excel identisch und leicht übertragbar.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!