Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ocorre um conflito de nomenclatura quando você tenta criar ou usar um identificador que foi definido anteriormente. Em alguns casos, conflitos de nomenclatura geram erros como Nome ambíguo detectado ou Declaração duplicada no escopo atual. Conflitos de nomenclatura que não são detectados podem resultar em bugs em seu código que produzem resultados incorretos, especialmente se você não declarar explicitamente todas as variáveis antes do primeiro uso.
Você pode evitar a maioria dos conflitos de nomenclatura entendendo o escopo, o nível do módulo privado e o nível do módulo público.
Um conflito de nomenclatura pode ocorrer quando um identificador:
- É visível em mais de um nível de escopo.
- Tem dois significados diferentes no mesmo nível.
Por exemplo, procedimentos em módulos separados podem ter o mesmo nome. Portanto, você pode definir um procedimento chamado MySub em módulos chamados Mod1 e Mod2. Nenhum conflito ocorrerá se cada procedimento for chamado apenas de outros procedimentos em seu próprio módulo. No entanto, um erro poderá ocorrer se MySub for chamado de um terceiro módulo e nenhuma qualificação será fornecida para distinguir entre os dois MySub procedimentos.
A maioria dos conflitos de nomenclatura pode ser resolvida precedendo cada identificador com um qualificador que consiste no nome do módulo e, se necessário, um nome de projeto . Por exemplo:
YourProject.YourModule.YourSub MyProject.MyModule.MyVar
O código anterior chama o procedimento YourSubSub e passa MyVar como um argumento. Use qualquer combinação de qualificadores para diferenciar identificadores idênticos.
O Visual Basic corresponde a cada referência a um identificador com a declaração "mais próxima" de um identificador correspondente. Por exemplo, se MyID for declarado Público em dois módulos em um projeto (Mod1 e Mod2), você pode especificar o declarado MyID em Mod2 sem qualificação de dentro Mod2, mas você deve qualificá-lo como Mod2.MyID para especificá-lo em Mod1.
Isso também é verdade se Mod2 estiver em um projeto diferente, mas diretamente referenciado. No entanto, se Mod2 estiver em um projeto referenciado indiretamente, ou seja, um projeto referenciado pelo projeto ao qual você faz referência direta, as Mod2 referências à variável nomeada MyID devem sempre ser qualificadas com o nome do projeto. Se você fizer referência MyID a um terceiro módulo diretamente referenciado, a correspondência será feita com a primeira declaração encontrada pesquisando:
- Projetos referenciados diretamente, na ordem em que aparecem na caixa de diálogo Referências do menu Ferramentas .
- Os módulos de cada projeto. Observe que não há ordem inerente aos módulos no projeto.
Não é possível reutilizar nomes de objetos de aplicativo host , por exemplo, R1C1 no Microsoft Excel, em diferentes níveis de escopo.
Dica
Erros típicos causados por conflitos de nomenclatura incluem nomes ambíguos, declarações duplicadas, identificadores não declarados e procedimentos que não são encontrados. Ao iniciar cada módulo com uma instrução Option Explicit para forçar declarações explícitas de variáveis antes de serem usadas, você pode evitar alguns possíveis conflitos de nomenclatura e bugs relacionados ao identificador.
Confira também
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.