La ricerca del tooltip della funzione personalizzata di Excel

Questa domanda è stata posta prima , ma ogni volta che la risposta accettata è semplicemente una rassegnazione per fornire descrizioni di funzioni usando Application.MacroOptions ( VBA6 ) ( VBA7 ), ma questa informazione non appare in realtà come suggerimento, quindi non risolve il mio problema .

L’objective. il gol

Quello che desideriamo è essere in grado di definire le funzioni personalizzate con qualsiasi mezzo (VBA, VSTO o COM aggiuntivo) e dare all’utente il vantaggio di una descrizione pop-up / tool-tip della funzione e dei suoi parametri, come appare per ogni funzione di Excel incorporata, sia in linea che nella barra della formula:

inserisci la descrizione dell'immagine qui

inserisci la descrizione dell'immagine qui

La risposta ampiamente accettata a questa esigenza è che non è ansible per le funzioni personalizzate, ma desidero sfidare questa convinzione.

Il problema

Attualmente, il meglio che ho visto fare è definire le funzioni (spesso utilizzando la chiamata MacroOptions precedente) in modo che quando si apre la finestra di dialogo delle funzioni (il pulsante fx nella barra della formula) le loro descrizioni di funzioni e parametri vengano visualizzate come di seguito:

inserisci la descrizione dell'immagine qui

Come puoi vedere, questa è una funzione complicata con molti parametri. Se l’utente non è a conoscenza di questo dialogo “argomenti della funzione” e di come farlo apparire, e conosce invece solo il tooltip standard di Excel, vedrà solo il nome della formula e nessun aiuto aggiuntivo:

inserisci la descrizione dell'immagine qui

Con il quale non hanno alcuna possibilità di fornire correttamente i parametri richiesti. (Senza leggere la documentazione, che, naturalmente, nessun utente fa mai.)

Ora, un utente esperto potrebbe sapere che digitando Ctrl + Shift + A , verrà assegnato un elenco di parametri di funzione completati automaticamente in questo modo:

inserisci la descrizione dell'immagine qui

Ma naturalmente, abbiamo lo stesso problema di cui sopra che è che gli utenti standard di Excel saranno utilizzati solo per il comportamento predefinito dalla prima immagine e probabilmente non avranno mai appreso quella caratteristica.

A questo punto dovrebbe essere chiaro il motivo per cui questo non è sufficiente e vogliamo ciò che ha ogni funzione incorporata – il tool-tip in-line che indica all’utente come usare la funzione.

La presa in giro

Inizialmente, avrei potuto essere convinto che questo semplicemente non è ansible se non con le funzioni native dell’applicazione di Excel. I componenti aggiuntivi e VBA sono funzionalità di estensibilità e questo suggerimento potrebbe semplicemente non essere estensibile. Ma questa teoria è messa in discussione dall’esistenza del componente aggiuntivo Strumenti di analisi. Certo, è costruito in Microsoft, ma ANALYS32.xll è un componente aggiuntivo XLL standalone proprio come quelli che possono essere prodotti in VB, C, C ++ e C #. Abbastanza sicuro, quando questo XLL viene caricato nell’applicazione, le funzioni che rende disponibili hanno gli stessi suggerimenti per le funzioni di Excel nativo:

inserisci la descrizione dell'immagine qui

Sicuramente se questa informazione è in qualche modo codificata in questo file XLL e passata a Excel, c’è un modo per replicarla con i nostri add-in? Ora sono al punto in cui inizierò ad insegnarmi un po ‘sulla decompilazione e vedrò se riesco a decodificare qualsiasi cosa stia succedendo nel toolkit di analisi.

Come puoi aiutare

Sono quasi sicuro di aver cercato tutte le informazioni disponibili pubblicamente su questo problema. Se qualcuno sa qualcosa che non so che potrebbe aiutare con questo, sentitevi liberi di intervenire. Io sono molto poco pratico con dlls / xlls compilati da reverse-engineering, quindi se qualcuno ha voglia di aprire la loro copia locale di Analysis32.xll e Sarebbe molto grato se capissi cosa sta succedendo con le sue definizioni di funzioni personalizzate. Altrimenti, continuerò a scavare da solo fino a quando non avrò colpito tutti i vicoli ciechi e riferirò ciò che trovo.