PDA

Vollständige Version anzeigen : AddIn: Excel Funktionen - Mit Kontextbeschreibungen


daki
28.03.2012, 18:36
Hallo

Ich habe mir ein Excel Add-Inn erstellt, in welchem ich eigene Excel-Funktionen mit VBA erstellt habe. Das Add-Inn besteht somit nur aus dem VBA (-Editor) und die Funktionen befinden sich in einem Modul.
Nun zu meiner Frage:
Wie kann ich eine Kontext-Beschreibung machen, die aufgeht, wenn man die Funktion im Excel eingibt (also =meineFunktion) und wie kann ich die Kontextbeschreibung machen, wenn ich die Funktion eingefügt habe (also bei =meineFunktion( )
Bei den Standard Excel Funktionen kommt jeweils eine Beschreibung wenn man die (Formel-) Funktion auswählt (mit Kurzbeschreibung was die Funktion macht) sowie wenn man die Funktion in der Funktions-Adresse hat (mit Beschreibung der verschiedenen zwingenden und optionalen Variablen der Funktion).

Vielen Dank und Grüsse

ransi
28.03.2012, 18:50
HAllo Daki

Was hast du für eine Excel Version ?

ransi

daki
28.03.2012, 19:22
Ich habe Excel 2010, 32bit...

Dank und Gruss
Daki

daki
28.03.2012, 19:48
Ok, ich habe nun herausgefunden wie ich die Texte einfügen kann (Objektkatalog -> Eigenschaften der Funktionen).

Nur kommen die Hilfetexte leider immer noch nicht. Was interessant ist; Wenn ich über die Funktionen -> "Benutzerdefiniert" meine Funktionen auswähgle, sehe ich nun die Hilfetexte, sowohl auf der Funktion wie danach darin (wenn ich die Werte definiere)...aber warum nicht in der Funktions-Adressliste im Excel??

Gruss und vielen Dank für Hilfe

ransi
28.03.2012, 19:57
HAllo

Ab Excel 2010 gibts in Application.MacroOptions einen neuen Parameter.
Da schreibst du deine Kontextbeschreibungen in ein Array.

Bau dir das mal nach:
<nobr><span style="font-family:Courier New,Arial; font-size:9pt ;" ><span style="color:#008000"; >' **********************************************************************</span><br /><span style="color:#008000"; >' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)</span><br /><span style="color:#008000"; >' **********************************************************************</span><br /><br /><span style="color:#000080"; >Option</span> <span style="color:#000080"; >Explicit</span><br /><br /><b><span style="color:#000080"; >Private</span> <span style="color:#000080"; >Sub</span> Workbook_Open()</b><br /><span style="color:#000080"; >Call</span> FunctionsBeschreibungen<br /><b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b><br /><br /><span style="color:#008000"; >' **********************************************************************</span><br /><span style="color:#008000"; >' Modul: Modul1 Typ: Allgemeines Modul</span><br /><span style="color:#008000"; >' **********************************************************************</span><br /><br /><span style="color:#000080"; >Option</span> <span style="color:#000080"; >Explicit</span><br /><br /><b><span style="color:#000080"; >Public</span> <span style="color:#000080"; >Sub</span> FunctionsBeschreibungen()</b><br /><span style="color:#000080"; >With</span> Application<br />&nbsp;&nbsp;&nbsp;&nbsp;.MacroOptions <span style="color:#800000"; >"myUDF1"</span>, <span style="color:#800000"; >"Beispielfunktion1"</span>, , , , , , , , , Array(<span style="color:#800000"; >"Argument1"</span>, <span style="color:#800000"; >"Argument2"</span>, <span style="color:#800000"; >"Argument3"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;.MacroOptions <span style="color:#800000"; >"myUDF2"</span>, <span style="color:#800000"; >"Noch ein Bl&ouml;dsinn"</span>, , , , , , , , , Array(<span style="color:#800000"; >"Hier schreib was f&uuml;r abc"</span>, <span style="color:#800000"; >"Hier schreib was f&uuml;r efg"</span>, <span style="color:#800000"; >"Hier dein Text f&uuml;r hijk"</span>, <span style="color:#800000"; >"hier noch was"</span>)<br /><span style="color:#000080"; >End</span> <span style="color:#000080"; >With</span><br /><b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b><br /><br /><b><span style="color:#000080"; >Public</span> <span style="color:#000080"; >Function</span> myUDF1(myarg1 <span style="color:#000080"; >As</span> String, myarg2 <span style="color:#000080"; >As</span> String, myarg3 <span style="color:#000080"; >As</span> <span style="color:#000080"; >String</span>) <span style="color:#000080"; >As</span> <span style="color:#000080"; >String</span></b><br />myUDF1 = myarg1 & myarg2 & myarg3<br /><b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Function</span></b><br /><br /><br /><b><span style="color:#000080"; >Public</span> <span style="color:#000080"; >Function</span> myUDF2(abc <span style="color:#000080"; >As</span> Long, efg <span style="color:#000080"; >As</span> Variant, hijk <span style="color:#000080"; >As</span> String, lmnop <span style="color:#000080"; >As</span> <span style="color:#000080"; >String</span>) <span style="color:#000080"; >As</span> <span style="color:#000080"; >Variant</span></b><br />myUDF2 = abc * efg & hijk & lmnop<br /><b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Function</span></b><br /></span></nobr>
ransi

daki
28.03.2012, 21:01
Vielen Dank ransi :)

Leider geht es so aber nicht:

a) Wenn ich ein neues Excel aufmache, wird das Add-In direkt geladen und ich bekomme eine Fehlermeldung 1004: "Kann Makro in einer ausgeblendeten Arbeitsmappe nicht bearbeiten"
Wenn ich auf Debuggen gehe, wird die erste .MacroOptions Zeile eingefärbt

B) Wenn ich das Add-Ins direkt öffne, bekome ich den Fehler auch, kann dann aber einfach eine Temp. Worksheets einblenden. Das geht aber nur wenn ich die Add-In Datei selber öffne, sonst gibt es wieder Fehler. Zudem sehe ich die Beschreibungstexte nicht....

Vielen DAnk und Gruss

daki
29.03.2012, 10:32
Hallo Zusammen

Ich bin nun einen Schritt weiter (danke Ransi für deine Inputs) und habe nun den Code wie untenstehend.
Soweit funktioniert das wunderbar, die Funktions-Beschreibung und die Variable-Beschreibung (Variablen / Attribute der Funktionen) erscheinen, wenn ich auf die Funktionstaste drücke und meine Funktion über das Funktionsmenü aufrufe.

Wenn ich aber direkt die Funktion in der Funktions-Adressliste im Excel eingebe:
- Kommt weder die Funktions-Beschreibung
- noch kommen danach die Variablen-Beschreibungen

Was ich nun aber bemerkt habe ist, dass dies auch bei allen anderen Plugins nicht der Fall ist, sondern nur bei den Office eigenen Funktionen.

Weiss hier jemand warum und ob es trotzdem eine möglichkeit gibt, die Hilfetexte auch in bei direktem Aufruf von eigenen Funktionen anzuzeigen (und nicht nur via Funktions-Menü)?

Vielen Dank und Gruss
Daki

Public Sub FunctionsDescriptions()

Dim neuesWB As Workbook
Dim a As String

Set neuesWB = Workbooks.Add
neuesWB.Unprotect

Dim ArgumentDesc1() As Variant
Dim ArgumentDesc2() As Variant
ArgumentDesc1() = Array("Angabe des Elements", "Angabe der Position", "Angabe des Trennzeichens")

Application.MacroOptions _
Macro:="yp_SplitElement", _
Description:="Funktion teilt ein Element auf und liefert ein Teilresultat zurück", _
HasMenu:=True, _
MenuText:="", _
HasShortcutKey:=True, ShortcutKey:="U", _
Category:="_My Functions Library", _
StatusBar:="StatusBar", _
ArgumentDescriptions:=ArgumentDesc1

ArgumentDesc2() = Array("Angabe des Elements (Array)", "Angabe des Trennzeichens")

Application.MacroOptions _
Macro:="yp_AvgArrayNumber", _
Description:="Funktion teilt ein Element auf und liefert den Durschnittswert aller Teile", _
HasMenu:=True, _
MenuText:="", _
HasShortcutKey:=True, ShortcutKey:="U", _
Category:="_My Functions Library", _
StatusBar:="StatusBar", _
ArgumentDescriptions:=ArgumentDesc2
End Sub