Ich habe den Ansatz von @ ScottK ausprobiert, zuerst als Nebenfunktion meiner funktionalen UDF, dann als eigenständige _Help-Suffix-Version, als ich auf Probleme stieß (siehe unten). Im Nachhinein ist der letztere Ansatz ohnehin besser - für einen Benutzer, der aufmerksam genug ist, um einen Tooltip zu sehen, offensichtlicher, und der Funktionscode wird nicht unübersichtlich.
Ich dachte mir, wenn ein unaufmerksamer Benutzer nur den Funktionsnamen eingibt und die Klammern schließt, während er darüber nachdenkt, wird Hilfe angezeigt und er ist auf dem Weg. Es schien jedoch keine gute Idee zu sein, eine Menge Text in eine einzelne Zelle zu kopieren, die ich nicht formatieren kann. Stattdessen, wenn die Funktion in eine Zelle ohne Argumente eingegeben wird, z
= interpolateLinear()
or
= interpolateLinear_Help()
Eine msgBox wird mit dem Hilfetext geöffnet. Eine msgBox ist auf ~ 1000 Zeichen begrenzt, vielleicht ist es 1024. Aber das reicht (kaum 8 ^ /) für meine übermäßig ausgetrickste Interpolationsfunktion. Wenn nicht, können Sie jederzeit ein Benutzerformular öffnen und in die Stadt gehen.
Als sich das Meldungsfeld zum ersten Mal öffnete, sah es nach Erfolg aus. Es gibt jedoch einige Probleme. Zunächst muss der Benutzer natürlich wissen, dass er die Funktion ohne Argumente eingeben kann (+1 für das _Help-Suffix UDF).
Das große Problem ist, dass die msgBox mehrmals hintereinander spontan wieder geöffnet wird, während in nicht verwandten Teilen der Arbeitsmappe gearbeitet wird. Unnötig zu sagen, dass es sehr nervig ist. Manchmal geht es weiter, bis ich eine Rundschreiben-Warnung erhalte. Stelle dir das vor. Wenn eine UDF die Zellformel ändern könnte, hätte ich das getan, um sie zum Schweigen zu bringen.
Ich weiß nicht, warum Excel das Bedürfnis hat, die Formel immer wieder neu zu berechnen. Weder die eigenständige _Help-Version noch die Vollversion (im Hilfemodus) haben Präzedenzfälle oder abhängige Elemente. Es gibt nirgendwo eine application.volatile- Anweisung. Natürlich gibt die Funktion einen Wert an die aufrufende Zelle zurück. Vielleicht löst das die Neuberechnung aus? Aber genau das machen UDFs. Ich glaube nicht, dass Sie keinen Wert zurückgeben können.
Da Sie nicht ein Arbeitsblatt ändern Formel aus einer UDF, habe ich versucht , eine bestimmte Zeichenfolge --a zurückzukehren Wert --to der anrufenden Zelle (die einzige können Sie den Wert von einem UDF ändern), herauszufinden , würde ich das prüfen Zellenwert mit application.caller im nächsten Zyklus, erkennen Sie meine Zeichenfolge und wissen Sie, dass die Hilfemeldung nicht erneut angezeigt werden soll. Schien damals eine gute Idee zu sein - hat nicht funktioniert. Vielleicht habe ich in meinem Zustand ohne Schlaf etwas Dummes getan. Die Idee gefällt mir immer noch. Ich werde dies aktualisieren, wenn ich das Problem behebe. Meine schnelle Lösung bestand darin, eine Zeile in das Hilfefeld einzufügen: " Suchen Sie nur im Notfall Hilfe. Löschen Sie die beleidigende Formel, um das Elend zu beenden.
In der Zwischenzeit habe ich den Application.MacroOptions-Ansatz ausprobiert. Ziemlich einfach und es sieht professionell aus. Nur ein Problem zu lösen. Ich werde später eine separate Antwort auf diesen Ansatz veröffentlichen.