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.
Um conflito de nomenclatura ocorre quando tenta criar ou utilizar um identificador que foi definido anteriormente. Em alguns casos, os conflitos de nomenclatura geram erros como Nome ambíguo detetado ou Declaração duplicada no âmbito atual. Os conflitos de nomenclatura que não são detetados podem resultar em erros no código que produzem resultados erróneos, especialmente se não declarar explicitamente todas as variáveis antes da primeira utilização.
Pode evitar a maioria dos conflitos de nomenclatura ao compreender o âmbito, 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:
- Está visível em mais do que um nível de âmbito.
- Tem dois significados diferentes no mesmo nível.
Por exemplo, os procedimentos em módulos separados podem ter o mesmo nome. Por conseguinte, pode definir um procedimento com o nome MySub em módulos com o nome Mod1 e Mod2. Não ocorrem conflitos se cada procedimento for chamado apenas a partir de outros procedimentos no seu próprio módulo. No entanto, pode ocorrer um erro se MySub for chamado a partir de um terceiro módulo e não for fornecida qualquer qualificação para distinguir entre os dois MySub procedimentos.
A maioria dos conflitos de nomenclatura pode ser resolvida antes de cada identificador com um qualificador que consiste no nome do módulo e, se necessário, num 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. Utilize 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 num projeto (Mod1 e Mod2), pode especificar o MyID declarado em Mod2 sem qualificação a partir de , Mod2mas tem de qualificá-lo para Mod2.MyID o especificar no Mod1.
Isto também é verdade se Mod2 estiver num projeto diferente, mas diretamente referenciado. No entanto, se Mod2 estiver num projeto referenciado indiretamente, ou seja, um projeto referenciado pelo projeto que referencia diretamente, as referências à Mod2 variável denominada MyID têm de ser sempre qualificadas com o nome do projeto. Se fizer referência MyID a partir de um terceiro módulo diretamente referenciado, a correspondência é feita com a primeira declaração encontrada ao procurar:
- Projetos referenciados diretamente, pela ordem em que aparecem na caixa de diálogo Referências do menu Ferramentas .
- Os módulos de cada projeto. Tenha em atenção que não existe nenhuma ordem inerente aos módulos no projeto.
Não pode reutilizar nomes de objetos de aplicação anfitriã , por exemplo R1C1 no Microsoft Excel, em diferentes níveis de âmbito.
Dica
Os erros típicos causados por conflitos de nomenclatura incluem nomes ambíguos, declarações duplicadas, identificadores não declarados e procedimentos que não foram 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 utilizadas, pode evitar potenciais conflitos de nomenclatura e erros relacionados com identificadores.
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.