Wer VBA programmiert, wird wissen, wie die Makros benutzbar sind. Einen Schritt weiter sind eigene Funktionen, an die Werte übergeben werden können und die ein Ergebnis zurückliefern. Funktionen, die über die Bearbeitungsleiste oder dem Formeleditor eingegeben werden und nicht per Button oder Icon aufgerufen werden müssen.

Das geht einfacher als gedacht. Leider lässt sich aber kein Tooltipp in der Bearbeitungsleiste anzeigen. Stattdessen aber im Formeleditor.

In diesem Tutorial erkläre ich, wie einfach eigene Funktionen programmiert werden können und zeige, wie eigener Beschreibungstext im Formeleditor geschrieben wird. Der Code sollte ab Excel 2010 funktionieren. Ich selber benutze allerdings die Version 2016.

Ein kleines Tutorial für Programmier-Unkundige und wie und wo Sie den Code eingeben können:

Wo ist der VBA-Editor?

 

Dokumentation
Code

 

Nachdem Sie den Code, wie im nächsten Tab beschrieben, eingeben haben, wählen Sie in Excel "Speichern unter" und "Durchsuchen" aus. Nun müssen Sie den passenden Dateityp zum Speichern auswählen. Ziemlich weit unten in der Auswahlliste steht Excel-Add-In (*.xlam). Excel findet daraufhin von allein das richtige Verzeichnis. Danach geben Sie noch einen Dateinamen ein und speichern das Add-In.

 

Add-In speichern

 

Einmal Excel komplett schließen und wieder öffnen und das gerade gespeicherte Add-In kann direkt installiert werden und steht dann dauerhaft als Funktion zur Verfügung. Falls noch nicht geschehen, wählen Sie eine leere Arbeitsmappe aus (oder auch eine vorhandene) und klicken Sie auf das Menüband "Datei". Dort wählen Sie unten die "Optionen" aus. In den Optionen gibt es links, an vorletzter Stelle, die Auswahl "Add-Ins". Nun wählen Sie im rechten Fenster unten bei "Verwalten: Excel-Add-Ins" aus, sofern es dort nicht ohnehin bereits steht und klicken dann beherzt auf "Los..."

 

funcaddin

 

 

funcaddininst

Im nachfolgendem Fenster wählen Sie nun Ihr zuvor gespeichertes Add-In aus. In meinem Beispiel habe ich mein Add-In "Telefon" genannt.

Sie können nun diese Funktion dauerhaft über den Formeleditor oder natürlich auch per Direkteingabe in der Zelle oder in der Bearbeitungsleiste benutzen.

In Zukunft brauchen Sie das Add-In auch nicht mehr zu installieren. Es steht dauerhaft in allen zukünftigen Excel-Arbeitsblättern zur Verfügung. Solange bis Sie es deinstallieren. Dazu einfach den Weg, wie beim installieren gehen und lediglich den Haken beim Add-In entfernen und "OK" klicken.

 

 

 

 

 

 

 

 Function Telefon(Nummer, SuchTrenner, Ersetzen)
Telefon = Replace(Nummer, SuchTrenner, Ersetzen)
End Function

Der Code selber muss in einem Modul eingegeben werden. Sonst funktionieren die Funktionen nicht.

Die eigentliche Funktion in diesem Beispiel ist sehr einfach. Ich prüfe eine Datenzelle mit einer Telefonnummer ab und ersetze gegebenenfalls das Trennzeichen zwischen der Vorwahl und der Anschlußkennung durch ein anderes Trennzeichen. Wird beispielsweise die Telefonnummer wie folgt eingegeben:

0123/456789

und ich möchte statt dem Slash ein Minuszeichen:

0123-456789

dann kann ich obiges Makro einfach verwenden:

=Telefon(A1;"/";"-")

Also eine einfache Benutzung von Replace. Nichts weltbewegendes, aber um die Funktionsweise zu erklären, sollte es reichen.

 

Private Sub Workbook_AddinInstall()
Dim strParameter() As Variant
strParameter() = Array("Die Telefonnummer, die durchsucht werden soll", "Das Trennzeichen, dass ersetzt werden soll", "Das Trennzeichen, das verwendet werden soll")

Application.MacroOptions macro:="Telefon", _
Description:="Ersetzt ein bestimmtes Trennzeichen zwischen Vorwahl und Anschluß in einer Telefonnummer", _
Category:="Text", _
ArgumentDescriptions:=strParameter

End Sub

EreignissprogrammierungIm VBA-Editor muss zu "DieseArbeitsmappe" gewechselt werden. Dort wird oben links unter der Pulldownauswahl Workbook ausgewählt (dort wo standardmäßig "(Allgemein)" steht) und in der gleichen Zeile rechts wird das Ereignis AddinInstall ausgewählt.

Excell wird nun diese Prozedur aufrufen, immer wenn ein neues Add-In installiert wird.

Wir nutzen dieses, um dort den Text anzugeben, den Excel im Formeleditor benutzen soll. Dafür benötige ich zuerst ein Array. Dieses Array muss vom Datentyp Variant sein und enthält den Text für die einzelnen Parameter, die wir übergeben. Also die Nummer, den Suchstring und den Ersetzenstring. Und genau diesen Text weisen wir dann auch in der zweiten Zeile zu. Danach nutzen wir die Methode MacroOptions in unserer Application. Dort gibt es einige Möglichkeiten etwas anzugeben, jedoch funktionieren nicht alle Parameter die ich dort angeben kann. Die Liste im Detail:

 

Parameter Datentyp 
Erklärung
Macro Variant  Der Name unserer Funktion
Description Variant  Dieser Text wird im Formeleditor angezeigt.
HasMenu  - Wird ignoriert
MenuText - Wird ignoriert
HasShortCutKey Variant True/False - Bei True wird mit dem Parameter ShortcutKey ein Tastaturkürzel zugewiesen. Bei False nicht.
Bei mir passierte nichts. Ich konnte mein Tastaurkürzel nicht benutzen.
ShortcutKey Variant "m" - sollte dann eigentlich das m, vermutlich mit Strg zusammen, zugewiesen werden. Bei mir tat sich leider nichts an dieser Stelle.
Category Variant Neben den vorhandenen Kategorien kann eine eigene neue angegeben werden. Es gibt für die vorhandenen Kategorien eindeutige Indexzahlen. Unter diesem Link finden sich weiter unten die Indexnummern der Kategorien: https://msdn.microsoft.com/de-de/library/office/ff838997(v=office.15).aspx
StatusBar Variant Wird ignoriert. Bezieht sich offenbar auf uralten VBA-Code/Excel-Versionen, wo es möglich war Einträge in der Statusbar vorzunehmen.
HelpContextID Variant Bezieht sich aud die Hilfedatei, die allerdings nicht direkt in VBA erstellt werden kann (soweit ich weiß).
HelpFile Variant Der Pfad zur Datei mit den Hilfetexten. Wer genaueres wissen möchte, folge am besten diesem Link: http://www.office-loesung.de/ftopic50234_0_0_asc.php
ArgumentDiscriptions  Array Dort kommen die einzelnen Beschreibungen der Parameter rein, die wir in unserer Funktion verwenden und die anschließend im Formeleditor angezeigt werden.

 

In meinem Beispielcode nutze ich die allgemeine Beschreibung der Funktion und einen kleinen Text jeweils zu den einzelnen Paramtern, die ich übergebe. Sehen kann man das ganze dann im Formeleditor:

Formeleditor

Formeleditor

 

Ich habe viel im Internet recherchiert und leider keine Möglichkeit gefunden, Tooltipps direkt bei Eingabe in der Bearbeitungsleiste anzuzeigen. In den einschlägigen Foren heißt es unisono, dass es nicht ginge.