Diese Frage wurde gefragt , vor , aber jedes Mal , wenn die akzeptierte Antwort ist einfach ein Rücktritt Funktionsbeschreibungen zur Verfügung zu stellen mit Application.MacroOptions
( VBA6 ) ( VBA7 ), aber diese Informationen nicht tatsächlich als Tooltip angezeigt, so dass es nicht mein Problem lösen.
Das Ziel
Was wir alle wünschen, ist, in der Lage zu sein, benutzerdefinierte Funktionen mit allen Mitteln (VBA-, VSTO- oder COM-Add-In) zu definieren und dem Benutzer den Vorteil einer Popup- / Tooltip-Beschreibung der Funktion und ihrer Parameter zu geben wird für jede integrierte Excel-Funktion entweder inline oder in der Formelleiste angezeigt:
Die allgemein akzeptierte Antwort auf dieses Bedürfnis ist, dass es für benutzerdefinierte Funktionen nicht möglich ist, aber ich möchte diesen Glauben in Frage stellen.
Das Problem
Derzeit ist es das Beste, was ich je gesehen habe, Funktionen zu definieren (häufig mit dem obigen MacroOptions-Aufruf), sodass beim Aufrufen des Funktionsdialogs (der Schaltfläche fx in der Formelleiste) die Funktions- und Parameterbeschreibungen wie folgt angezeigt werden:
Wie Sie sehen können, ist dies eine komplizierte Funktion mit vielen Parametern. Wenn der Benutzer diesen Dialog "Funktionsargumente" und dessen Aufforderung nicht kennt und stattdessen nur mit dem Standard-Tooltip von Excel vertraut ist, wird nur der Formelname und keine zusätzliche Hilfe angezeigt:
Damit haben sie keine Chance, die erforderlichen Parameter korrekt anzugeben. (Ohne die Dokumentation zu lesen, was natürlich kein Benutzer jemals tut.)
Jetzt weiß ein Power-User möglicherweise, dass er durch Eingabe von Ctrl+ Shift+ Aeine automatisch vervollständigte Liste von Funktionsparametern erhält, wie folgt:
Aber natürlich haben wir das gleiche Problem wie oben: Standard-Excel-Benutzer werden nur vom ersten Bild an an das Standardverhalten gewöhnt und haben diese Funktion wahrscheinlich nie gelernt.
An diesem Punkt sollte klar sein, warum dies nicht ausreicht, und wir möchten, was jede eingebaute Funktion hat - den Inline-Tooltipp, der dem Benutzer die Verwendung der Funktion erklärt.
Der Tease
Zuerst war ich vielleicht davon überzeugt, dass dies nur mit den nativen Excel-Anwendungsfunktionen möglich ist. Add-Ins und VBA sind Erweiterungsfunktionen, und dieser Tooltipp ist möglicherweise einfach nicht erweiterbar. Diese Theorie wird jedoch durch die Existenz des Analysis Toolpak-Add-Ins in Frage gestellt. Sicher, es ist in Microsoft integriert, aber ANALYS32.xll ist ein eigenständiges XLL-Add-In, genau wie diejenigen, die in VB, C, C ++ und C # erstellt werden können. Sicher genug, wenn diese XLL in die Anwendung geladen wird, haben die Funktionen , die sie zur Verfügung stellt, die gleichen Tooltipps für native Excel-Funktionen:
Wenn diese Informationen in dieser XLL-Datei verschlüsselt und an Excel weitergegeben werden, gibt es sicherlich eine Möglichkeit, sie mit unseren eigenen Add-Ins zu replizieren. Ich bin jetzt an dem Punkt angelangt, an dem ich anfangen werde, mir ein wenig über das Dekompilieren beizubringen und zu prüfen, ob ich alles, was im Analyse-Toolpak vor sich geht, rückentwickeln kann.
Wie kannst du helfen
Ich bin mir fast sicher, dass ich alle öffentlich verfügbaren Informationen zu diesem Problem recherchiert habe. Wenn jemand etwas weiß, von dem ich nicht weiß, dass es dabei helfen könnte, können Sie sich gerne einschalten. Ich bin mit Reverse Engineering kompilierter DLLs / XLS sehr vertraut. Wenn also jemand Lust hat, seine lokale Kopie von Analysis32.xll und zu öffnen Wenn ich herausfinden würde, was mit den benutzerdefinierten Funktionsdefinitionen los ist, wäre ich sehr dankbar. Ansonsten werde ich mich einfach weiter damit beschäftigen, bis ich alle Sackgassen erreicht habe und zurückmelden, was ich finde.
Antworten:
Ich habe ein Proof-of-Concept-Projekt als Excel-DNA IntelliSense -Projekt auf GitHub veröffentlicht und dieses implementiert.
Mithilfe der UI-Automatisierungsklassen zur Überwachung der entsprechenden Ereignisse der Excel-Benutzeroberfläche wird bei Bedarf ein Formular angezeigt.
Der Code wird als Excel-DNA- Add-In verpackt und funktioniert auf meinem Excel 2013 / Windows 8-Computer. Ich habe eine andere Konfiguration getestet (64-Bit-Excel 2010 unter Windows Server 2008) und hatte ernsthafte Probleme.
Für eine C # -Funktion, die mit den folgenden Excel-DNA-Attributen definiert ist:
Wir erhalten beide die Funktionsbeschreibung
und bei der Auswahl der Funktion erhalten wir Argumenthilfe
Das sieht gut aus, ist aber immer noch sehr schuppig, funktioniert nur auf meinem Computer und stürzt manchmal in Excel ab. Es könnte jedoch ein Anfang sein ...
Update 9. Mai 2014:
Ich habe einige Fortschritte gemacht, um herauszufinden, wie das Argument unter älteren Excel- und Windows-Versionen funktioniert. Es erfordert jedoch noch viel Arbeit, um alles zuverlässig zu machen. Wer dabei helfen möchte, sollte sich bitte direkt an mich wenden.
Update 18. Juni 2016:
Die Unterstützung von Excel UDF IntelliSense für Excel-DNA-Add-Ins und VBA-Funktionen wird derzeit getestet. Anweisungen finden Sie auf der Seite Erste Schritte auf GitHub.
quelle
Wie wäre es mit
Ist das akzeptabel?
Es ist ein bisschen hässlich, aber einfacher.
quelle
Was ist XLL?
Wie entwickelt man die XLL?
Wo finde ich eine Kurzanleitung zum Erstellen einer einfachen XLL?
Wie bekomme ich Tooltips?
pxArgumentText, pxFunctionHelp, pxArgumentHelp1
Leider enthält das Analysis Toolpak-Add-In auch keine Tooltips.
Meine Lösung war falsch, aber mit falschen Informationen, die auf dem Originalplakat veröffentlicht wurden. Ein Bild mit BINOMDIST anzeigen, wenn sein Link deutlich zeigt, dass dies keine Funktion von ANALYS32.xll ist.
Das heißt, ich habe versucht, eine unmögliche Frage zu lösen. Weil es keine XLL gibt, die das kann, was das Poster verlangt. Wenn Sie eine Excel-Version finden, die QuickInfos zu XLLs enthält, lassen Sie es mich bitte wissen.
Ich bin mir sicher, dass meine Antwort zu dem, was auf dem Poster gefragt wurde, um das XLL-Verhalten nachzuahmen, in Bezug auf das, was ANALYS32.xll tut, die richtigste war.
quelle