Página 1 de 1

VBA FUNCTION | INTELISENTE EM UDF (USER DEFINED FUNCTION)

Enviado: 12 Jul 2021 às 15:03
por patrick777
UDF (user defined function) feita por mim não tem o intelisense quando estou em uma planilha utilizando a função.
Quero inserir isso, mas não sei como fazer. Mesmo conhecendo o método MacroOptions (https://docs.microsoft.com/pt-br/office ... crooptions)

Minha UDF
Sem intelisense,
SUBTLIQ (quantidade, preço_bruto, desconto), mas aparece SUBTLIQ ()

Função Nativa
Com intelisene,
SOMA (num1;num 2...) parece SOMA (num1;num 2...)

CTRL+SHIFT+A ajuda,
"Box" Argumentos da Função ajuda.

Contudo nenhum apresenta a solução desejada, que agiliza o preenchimento da fórmula.

Re: VBA FUNCTION | INTELISENTE EM UDF (USER DEFINED FUNCTION)

Enviado: 12 Jul 2021 às 17:06
por osvaldomp
Aqui funciona (MS 365).
Código: Selecionar todos
Function MinhaUDF(rng As Range, k As Long)
 Application.Volatile True
 If rng.Offset(, k) = "" Then MinhaUDF = "vazia" Else MinhaUDF = "não vazia"
End Function
#
Após digitar na célula =minhaudf( e apertar Ctrl+Shift+a aparece conforme a figura abaixo.
Imagem

E após inserir os argumentos + Enter ~~~> =minhaudf(A1;3)

Re: VBA FUNCTION | INTELISENTE EM UDF (USER DEFINED FUNCTION)

Enviado: 13 Jul 2021 às 11:14
por patrick777
Bom dia, Sr. Osvaldo!

Bacana, aprendi sobre o Application.Volatile, legal!

Contudo eu queria intelisense sem a necessidade do atalho CTRL SHIFT A, devido minhas fórmulas serem destinadas a usurários com pouca expertise no excel, entende?

O senhor conhece alguma outra caminho para chegar ao intelisense?

Conheço o ADD-IN Excel-DNA, contudo ele ainda assim não satisfaz apropriadamente, dada sua complexidade para manutenção futura de uma séria de docs.

De qualquer forma, agradeço seu retorno, oportuno e correto!

Re: VBA FUNCTION | INTELISENTE EM UDF (USER DEFINED FUNCTION)

Enviado: 13 Jul 2021 às 14:13
por osvaldomp
Olá, Sr. Patrick.

Me parece que caminho fácil realmente não existe.

Coloquei na busca do sábio Google e retornou umas ideias, veja no link abaixo se aproveita alguma além das que o Sr. já conhece.

https://www.google.com/search?q=excel+a ... CAg&uact=5

Algumas ideias para contornar:
1. se possível evite ou reduza a necessidade de parâmetros na UDF.
2. colocar as instruções em Comentário na célula (ou Anotação MS 365) e exibi-lo via Worksheet_SelectionChange.
3. colocar as instruções em UserForm e carregá-lo no modo vbModeless

Re: VBA FUNCTION | INTELISENTE EM UDF (USER DEFINED FUNCTION)

Enviado: 13 Jul 2021 às 20:12
por patrick777
Boa noite, Sr. Osvaldo!

Muito obrigado por me indicar caminhos. Sou recentemente iniciado no VBA, de forma avançada, então careço de experiência para conhecer todos as recomendações que o senhor me passou... e acho isso Ótimo!!! O senhor me iluminou uma direção onde posso encontrar conhecimentos úteis as minhas necessidades. Por isso, lhe sou grato!

Por exemplo, eu sabia do evento que o senhor menciou Worksheet_SelectionChange, mas não sabia o comando dela ainda... e agora o senhor já me apontou ela, obrigado mesmo por isso!

De fato, provavelmente se eu fizer questão da intelisense terei de usa o add in ExcelDNA. Contudo a princípio irei evitar, dado que estou programando planilhas para uso de vários usuários, todos extremamente inexperientes.

Obrigado por dedicar um pouco do seu tempo tentando me ajudar!

Se eu não puder, espero que alguém faça o mesmo pelo senhor, obrigado mesmo!

Um forte abraço, sucesso!

Re: VBA FUNCTION | INTELISENTE EM UDF (USER DEFINED FUNCTION)

Enviado: 13 Jul 2021 às 20:32
por osvaldomp
Olá, Sr. Patrick.

Agradeço pelas suas palavras e fico contente por ter minimamente contribuído de alguma forma.

Desejo-lhe sucesso também. :)