La quête de la fonction Excel custom tooltip

cette question a été demandé 151940920" avant , mais chaque fois la réponse acceptée est simplement une démission pour fournir des descriptions de fonction en utilisant Application.MacroOptions ( VBA6 ) ( VBA7 ), mais cette information ne semble pas réellement comme un tooltip, il ne résout pas mon problème.

L'Objectif

ce que nous voulons tous, c'est être capable de définir des fonctions personnalisées par n'importe quel moyen (VBA, VSTO, ou COM add-in) et de donner à l'utilisateur le bénéfice d'une pop-up/tool-tip description de la fonction et de ses paramètres, comme apparaît pour chaque fonction Excel intégrée, soit en ligne ou dans la barre de formule:

enter image description here

enter image description here

la réponse largement acceptée à ce besoin est qu'il n'est pas possible pour les fonctions personnalisées, mais je souhaite pour contester cette croyance.

Le Problème

actuellement, le mieux que j'ai vu quelqu'un faire est de définir des fonctions (souvent en utilisant L'appel de MacroOptions ci-dessus) de sorte que lorsque vous soulevez la boîte de dialogue de fonction (le bouton fx dans la barre de Formule) leur fonction et la description des paramètres apparaissent comme suit:

enter image description here

Comme vous pouvez le voir, c'est une fonction compliquée avec de nombreux paramètres. Si l'utilisateur n'est pas au courant de ce dialogue "arguments de fonction" et de la façon de le mettre en place, et sont plutôt familier seulement avec tooltip standard D'Excel, ils ne verront que le nom de la formule et aucune aide supplémentaire:

enter image description here

avec lesquels ils n'ont aucune chance de fournir correctement les paramètres requis. (Sans lire la documentation, Ce que bien sûr, aucun utilisateur ne fait jamais.)

Maintenant, un utilisateur de puissance pourrait savoir qu'en tapant Ctrl + Shift + A , ils seront accordés une liste auto-remplie de paramètres de fonction comme ainsi:

enter image description here

mais bien sûr, nous avons le même problème que ci-dessus qui est que les utilisateurs excel standard ne seront utilisés au comportement par défaut à partir de la première image et n'auront probablement jamais appris que caractéristique.

il devrait être clair par ce point pourquoi ce n'est pas suffisant et nous voulons ce que chaque fonction intégrée a - l'outil en ligne-Conseil qui dit à l'utilisateur comment utiliser la fonction.

L'Allumeuse

au début, j'aurais pu être convaincu que ce n'est tout simplement pas possible, sauf avec les fonctions D'application natives Excel. Add-ins et VBA sont des fonctionnalités d'extensibilité, et cet outil-pointe peut tout simplement ne pas être extensible. Mais cette théorie est contestée par l'existence de la macro complémentaire Utilitaire d'Analyse. Bien sûr, il est construit dans Microsoft, mais ANALYS32.xll est un ajout autonome de XLL comme ceux qui peuvent être produits en VB, C, C++, et C#. Bien sûr, lorsque ce XLL est chargé dans l'application fonctions qu'il rend disponibles ont les mêmes outils-conseils de natives fonctions excel:

enter image description here

sûrement si cette information est en quelque sorte encodée dans ce fichier XLL et transmise à Excel, il y a un moyen de la répliquer avec nos propres Add-ins? Je suis maintenant au point où je vais commencer à m'enseigner un peu sur la décomposition et de voir si je peux rétro-ingénieur ce qui se passe dans la boîte à outils d'analyse.

Comment Vous Pouvez Les Aider

je suis presque certain que j'ai fait des recherches sur toutes les informations accessibles au public ce problème. Si quelqu'un sait quelque chose que je ne sais pas qui pourrait aider avec ça, n'hésitez pas à intervenir. Je ne suis pas très familier avec les dlls / xlls compilés par rétro-ingénierie, donc si quelqu'un a envie d'ouvrir sa copie locale D'Analysis32.xll et de comprendre ce qui se passe avec ses définitions de fonction personnalisées, je serais très reconnaissant. Sinon, je vais continuer à creuser moi-même jusqu'à ce que j'ai atteint toutes les impasses et de rapporter ce que je trouve.

93
demandé sur Community 2013-06-03 22:41:05

3 réponses

j'ai posté un projet de validation de principe à GitHub comme le Excel-DNA IntelliSense projet, la mise en œuvre de ce.

en utilisant les classes D'automatisation de L'UI pour surveiller les événements D'interface utilisateur Excel appropriés, un formulaire est affiché au besoin.

le code est enveloppé comme un Excel-DNA add-in, et fonctionne sur ma machine Excel 2013 / Windows 8. J'ai testé sur une autre configuration (Excel 64 bits) 2010 sur Windows Server 2008) et a eu de graves problèmes.

pour une fonction C # définie avec les attributs Excel-DNA comme ceci:

[ExcelFunction(Description = 
    "A useful test function that adds two numbers, and returns the sum.")]
public static double AddThem(
    [ExcelArgument(Name = "Augend", 
                   Description = "is the first number, to which will be added")] 
    double v1,
    [ExcelArgument(Name = "Addend", 
                   Description = "is the second number that will be added")]     
    double v2)
{
    return v1 + v2;
}

nous obtenons à la fois la description de la fonction

Function Description

et lors de la sélection de la fonction, nous obtenons l'aide d'argument

Argument Help

ça a l'air sympa, mais c'est toujours très feuilleté, ne fonctionne que sur ma machine et parfois crashs Excel. Il pourrait être un début, cependant...


Mise À Jour Le 9 Mai 2014:

j'ai fait quelques progrès en trouvant comment faire fonctionner l'aide d'argument sous les anciennes versions Excel et Windows. Cependant, il reste encore beaucoup de travail pour tout fiable. Toute personne qui souhaite aider avec ceci devrait s'il vous plaît contactez-moi directement.


Mise À Jour Le 18 Juin 2016:

Excel UDF IntelliSense pour les deux Excel-l'ADN des compléments et des fonctions VBA est actuellement à l'essai. Consultez la page pour commencer sur GitHub pour obtenir des instructions.

39
répondu Govert 2016-06-19 18:22:00

Que Diriez-vous de

  1. Capture de saisie de texte sur l'événement clé de presse de la cellule. comme ceci
  2. vérifiez si le texte correspond à des fonctions personnalisées.
  3. si les correspondances, alors montrer quelque chose comme l'étiquette ou la forme pour prétendre être un tooltip. comme ceci

est-ce acceptable?

c'est un peu moche mais plus facile.

1
répondu Clxy 2017-05-23 12:09:20

Qu'est-ce que XLL?

un XLL est une DLL qui exporte plusieurs procédures qui sont appelées par Excel ou le Gestionnaire D'Add-in Excel. http://msdn.microsoft.com/en-us/library/office/bb687861.aspx

Comment développer le XLL?

Excel XLL SDK avec Visual C++ (ou tout ce qui peut compiler une DLL et appeler les procédures SDK)

où je peux trouver un guide rapide pour créer un simple XLL?

http://support.microsoft.com/kb/178474

Comment puis-je obtenir des infobulles?

  1. implémentez votre fonction en tant que procédure et exportez-la
  2. mettre en Œuvre et de la procédure d'exportation xlAutoOpen(void) - http://msdn.microsoft.com/en-us/library/office/bb687860.aspx
  3. xlAutoOpen n'a qu'à appeler xlfRegister - http://msdn.microsoft.com/en-us/library/office/bb687900.aspx
  4. pour tooltips, attention spéciale pour: pxArgumentText, pxFunctionHelp, pxArgumentHelp1

malheureusement, L'outil D'analyse add-in Toolpak n'a pas d'infobulle non plus.

ma solution était fausse, mais avec de fausses informations postées par l'affiche originale. Montrer une image avec BINOMDIST, si son link montre clairement que ce n'est pas une fonction D'ANALYSE32.xll.

Cela signifie que j'essayais de résoudre une question impossible. Parce qu'il n'y a pas de XLL qui puisse faire ce que l'affiche a demandé. Si vous trouvez une version D'Excel qui affiche des infobulles de XLLs, merci de me le faire savoir.

à propos de ce que l'affiche demandait, en essayant d'imiter le comportement XLL, je suis sûr que ma réponse était la plus correcte en relation avec ce que ANALYS32.xll faire.

0
répondu Marcos Zolnowski 2013-07-10 22:27:38