Questa domanda è stata posta in precedenza , ma ogni volta la risposta accettata è semplicemente una rinuncia a fornire descrizioni di funzioni utilizzando Application.MacroOptions
( VBA6 ) ( VBA7 ), ma questa informazione in realtà non appare come un suggerimento, quindi non risolve il mio problema.
L'obiettivo. il gol
Ciò che tutti desideriamo è essere in grado di definire funzioni personalizzate con qualsiasi mezzo (VBA, VSTO o componente aggiuntivo COM) e fornire all'utente il vantaggio di una descrizione popup / suggerimento della funzione e dei suoi parametri, come viene visualizzato per ogni funzione di Excel incorporata, in linea o nella barra della formula:
La risposta ampiamente accettata a questa esigenza è che non è possibile per le funzioni personalizzate, ma desidero sfidare questa convinzione.
Il problema
Attualmente, il meglio che ho visto fare a qualcuno è definire le funzioni (spesso usando la chiamata MacroOptions sopra) 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 appaiono come di seguito:
Come puoi vedere, questa è una funzione complicata con molti parametri. Se l'utente non è a conoscenza di questa finestra di dialogo "argomenti di funzione" e di come visualizzarla, e ha invece familiarità solo con il suggerimento standard di Excel, vedrà solo il nome della formula e nessun aiuto aggiuntivo:
Con cui non hanno alcuna possibilità di fornire correttamente i parametri richiesti. (Senza leggere la documentazione, cosa che ovviamente nessun utente fa mai.)
Ora, un utente esperto potrebbe sapere che digitando Ctrl+ Shift+ A, verrà concesso un elenco di parametri di funzione completato automaticamente in questo modo:
Ma ovviamente, abbiamo lo stesso problema di cui sopra, ovvero che gli utenti standard di Excel verranno utilizzati solo per il comportamento predefinito dalla prima immagine e probabilmente non avranno mai imparato quella funzione.
Dovrebbe essere chiaro a questo punto perché questo non è sufficiente e vogliamo ciò che ogni funzione incorporata ha: il suggerimento in linea che dice all'utente come utilizzare la funzione.
La presa in giro
All'inizio, avrei potuto essere convinto che questo semplicemente non fosse possibile se non con le funzioni dell'applicazione Excel native. 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 Analysis Toolpak. Certo, è costruito in Microsoft, ma ANALYS32.xll è un componente aggiuntivo XLL autonomo 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 delle funzioni native di Excel:
Sicuramente se queste informazioni sono in qualche modo codificate in questo file XLL e passate a Excel, c'è un modo per replicarle con i nostri componenti aggiuntivi? Ora sono al punto in cui inizierò a insegnare a me stesso un po 'sulla decompilazione e vedere se posso decodificare qualunque cosa stia succedendo nel toolpak di analisi.
Come puoi aiutare
Sono quasi certo di aver ricercato tutte le informazioni disponibili pubblicamente su questo problema. Se qualcuno sa qualcosa che non so che potrebbe aiutare con questo, sentiti libero di intervenire. Non ho molta familiarità con le dll / xll compilate dal reverse engineering, quindi se qualcuno ha voglia di aprire la propria copia locale di Analysis32.xll e capire cosa sta succedendo con le sue definizioni di funzioni personalizzate, sarei molto grato. Altrimenti, continuerò a scavare in questo da solo finché non avrò raggiunto tutti i vicoli ciechi e riferirò ciò che trovo.