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:
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:
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:
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:
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:
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.
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
et lors de la sélection de la fonction, nous obtenons l'aide d'argument
ç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.
Que Diriez-vous de
- Capture de saisie de texte sur l'événement clé de presse de la cellule. comme ceci
- vérifiez si le texte correspond à des fonctions personnalisées.
- 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.
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?
Comment puis-je obtenir des infobulles?
- implémentez votre fonction en tant que procédure et exportez-la
- mettre en Œuvre et de la procédure d'exportation xlAutoOpen(void) - http://msdn.microsoft.com/en-us/library/office/bb687860.aspx
- xlAutoOpen n'a qu'à appeler xlfRegister - http://msdn.microsoft.com/en-us/library/office/bb687900.aspx
- 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.