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:
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.
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..."
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
Im 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:
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.