Quanto construímos funções e macros personalizadas em nossos programas feitos no VBA em Excel e Word, precisamos expô-las para que sejam acessadas por outros módulos ou mesmo Forms. Para isso, declaramo-as como Public ou simplesmente ocultamos o modificador de acesso que é Public por padrão.
Um inconveniente do VBA é que nossas Functions e Subs ficam disponíveis para o usuário quando este abre a janela de execução de macros (Alt+F8). Isso pode gerar uma série de situações inesperadas, além de erros.
Para que as funções desenvolvidas como Public no VBA não apareçam na caixa de diálogo de execução de macros, basta que na janela de código, seja um Módulo ou UserForm seja colocada a seguinte diretiva no cabeçalho:
Experimente agora abrir a caixa de diálogo de execução de Macros ou no Excel, acessar a caixa de diálogo Inserir Função selecionar a opção “Definida pelo usuário” e veja que as Functions e Subs dentro do módulo com a declaração acima.
Note também que a declaração só oculta o código VBA neste escopo. As Functions e Subs continuarão disponíveis para todo o aplicativo VBA, não afetando o aplicativo.
Bom proveito!
Referências:
Tomás
Dúvida: como executar macros sob condição, no Microsoft Word?
Situação:
Em “meuarquivo.doc”, há quatro macros: “m1”, “m2”, “m3” e “m4”.
O primeiro caractere da primeira linha de “meuarquivo.doc”, será sempre um destes quatro números inteiros: ou 1, ou 2, ou 3, ou 4.
Problema:
Gostaria que, ao acionar uma tecla de atalho com o arquivo aberto, fosse executada a macro “m1”, somente se o primeiro caractere da primeira linha for 1; a macro “m2”, somente se o primeiro caractere da primeira linha for 2; a macro “m3”, somente se o primeiro caractere da primeira linha for 3; a macro “m4”, somente se o primeiro caractere da primeira linha for 4.
Agradeceria muito a ajuda.
Gerson,
Como a quantidade de dúvidas que são enviadas é grande, abri um fórum para melhor atender a estas solicitações. O endereço do fórum é:
http://www.tomasvasquez.com.br/forum
Além disso, a probabilidade de alguém ter tido o mesmo problema e de ele estar resolvido é bem grande. Nos vemos lá!
Abraços
Tomás