Esta pergunta já foi feita antes , mas cada vez que a resposta aceita é simplesmente uma renúncia para fornecer descrições de função usando Application.MacroOptions
( VBA6 ) ( VBA7 ), mas essa informação não aparece realmente como uma dica de ferramenta, então não resolve meu problema.
O objetivo
O que todos desejamos é ser capaz de definir funções personalizadas por qualquer meio (VBA, VSTO ou suplemento COM) e dar ao usuário o benefício de uma descrição pop-up / dica de ferramenta da função e seus parâmetros, como aparece para todas as funções integradas do Excel, inline ou na barra de fórmulas:
A resposta amplamente aceita para essa necessidade é que não é possível para funções personalizadas, mas desejo desafiar essa crença.
O problema
Atualmente, o melhor que já vi alguém fazer é definir funções (geralmente usando a chamada MacroOptions acima) para que, ao abrir a caixa de diálogo da função (o botão fx na barra de fórmulas), suas descrições de função e parâmetro apareçam como abaixo:
Como você pode ver, esta é uma função complicada com muitos parâmetros. Se o usuário não estiver ciente dessa caixa de diálogo de "argumentos de função" e como abri-la e, em vez disso, estiver familiarizado apenas com a dica de ferramenta padrão do Excel, verá apenas o nome da fórmula e nenhuma ajuda adicional:
Com o qual eles não têm chance de fornecer corretamente os parâmetros necessários. (Sem ler a documentação, o que, claro, nenhum usuário faz.)
Agora, um usuário avançado pode saber que, digitando Ctrl+ Shift+ A, ele receberá uma lista auto-completada de parâmetros de função como:
Mas é claro, temos o mesmo problema acima, que é que os usuários padrão do Excel só estarão acostumados com o comportamento padrão da primeira imagem e provavelmente nunca terão aprendido esse recurso.
Deve estar claro neste ponto porque isso não é suficiente e queremos o que cada função integrada tem - a dica de ferramenta em linha que informa ao usuário como usar a função.
A provocação
No começo, eu poderia estar convencido de que isso simplesmente não é possível, exceto com as funções nativas do aplicativo Excel. Suplementos e VBA são recursos de extensibilidade e esta dica de ferramenta pode simplesmente não ser extensível. Mas essa teoria é desafiada pela existência do suplemento Analysis Toolpak. Claro, ele é construído na Microsoft, mas ANALYS32.xll é um suplemento XLL autônomo, assim como aqueles que podem ser produzidos em VB, C, C ++ e C #. Com certeza, quando este XLL é carregado no aplicativo, as funções que ele disponibiliza têm as mesmas dicas de ferramentas das funções nativas do Excel:
Certamente, se essa informação for de alguma forma codificada neste arquivo XLL e passada para o Excel, há uma maneira de replicá-la com nossos próprios suplementos. Estou no ponto agora em que vou começar a me ensinar um pouco sobre descompilar e ver se consigo fazer a engenharia reversa de tudo o que está acontecendo no conjunto de ferramentas de análise.
Como você pode ajudar
Tenho quase certeza de que pesquisei todas as informações disponíveis publicamente sobre esse problema. Se alguém souber de algo que eu não sei que possa ajudar com isso, sinta-se à vontade para intervir. Não estou muito familiarizado com dlls / xlls compilados por engenharia reversa, então se alguém quiser abrir sua cópia local de Analysis32.xll e descobrir o que está acontecendo com suas definições de funções personalizadas, eu ficaria muito grato. Do contrário, continuarei investigando sozinho até chegar a todos os becos sem saída e relatar o que encontrar.
Respostas:
Publiquei um projeto de prova de conceito no GitHub como o projeto Excel-DNA IntelliSense , implementando isso.
Usando as classes UI Automation para monitorar os eventos apropriados da interface do usuário do Excel, um formulário é exibido quando apropriado.
O código é empacotado como um suplemento do Excel-DNA e funciona na minha máquina Excel 2013 / Windows 8. Eu testei em outra configuração (Excel 2010 de 64 bits no Windows Server 2008) e tive problemas sérios.
Para uma função C # definida com os atributos Excel-DNA como este:
obtemos a descrição da função
e ao selecionar a função, obtemos ajuda do argumento
Parece bom, mas ainda é muito instável, só funciona na minha máquina e às vezes trava o Excel. Pode ser um começo, porém ...
Atualização 9 de maio de 2014:
Fiz alguns progressos descobrindo como fazer o argumento help funcionar em versões mais antigas do Excel e do Windows. No entanto, ainda é necessário muito trabalho para que tudo seja confiável. Qualquer pessoa que desejar ajudar com isso deve entrar em contato comigo diretamente.
Atualização de 18 de junho de 2016:
O suporte do Excel UDF IntelliSense para suplementos do Excel-DNA e funções VBA agora está sendo testado. Consulte a página de primeiros passos no GitHub para obter instruções.
fonte
E se
Isso é aceitável?
É um pouco feio, mas mais fácil.
fonte
O que é XLL?
Como você desenvolve o XLL?
Onde posso encontrar um guia rápido para criar um XLL simples?
Como obtenho dicas?
pxArgumentText, pxFunctionHelp, pxArgumentHelp1
Infelizmente, o suplemento Analysis Toolpak também não tem dicas de ferramentas.
Minha solução estava errada, mas com informações erradas postadas pelo autor original. Mostrando uma imagem com DISTRBINOM, se seu link mostrar claramente que esta não é uma função de ANALYS32.xll.
Isso significa que eu estava tentando resolver uma questão impossível. Porque não existe um XLL que faça o que o autor solicitou. Se você encontrar uma versão do Excel que mostre dicas de ferramentas de XLLs, entre em contato.
Sobre o que o autor da postagem perguntou, tentando imitar o comportamento do XLL, tenho certeza que minha resposta foi a mais correta em relação ao que o ANALYS32.xll faz.
fonte