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.
Escopo refere-se à disponibilidade de uma variável, constante ou procedimento para uso por outro procedimento. Há três níveis de escopo: nível de procedimento, nível de módulo privado e nível de módulo público.
Você determina o escopo de uma variável ao declará-la. É uma boa ideia declarar todas as variáveis explicitamente para evitar erros de conflito de nomenclatura entre variáveis com escopos diferentes.
Escopo no nível do procedimento
Uma variável ou constante definida em um procedimento não é visível fora desse procedimento. Somente o procedimento que contém a declaração de variável pode usá-la. No exemplo a seguir, o primeiro procedimento exibe uma caixa de mensagem que contém uma cadeia de caracteres. O segundo procedimento exibe uma caixa de mensagem em branco porque a variável é local para o primeiro procedimento.
Sub LocalVariable()
Dim strMsg As String
strMsg = "This variable can't be used outside this procedure."
MsgBox strMsg
End Sub
Sub OutsideScope()
MsgBox strMsg
End Sub
Escopo de nível de módulo privado
Você pode definir variáveis e constantes no nível do módulo na seção Declarações de um módulo. As variáveis no nível do módulo podem ser públicas ou privadas. As variáveis públicas estão disponíveis para todos os procedimentos em todos os módulos de um projeto; variáveis privadas estão disponíveis apenas para procedimentos nesse módulo. Por padrão, as variáveis declaradas com a instrução Dim na seção Declarações têm como escopo privado. No entanto, ao preceder a variável com a palavra-chave Private, o escopo é óbvio em seu código.
No exemplo a seguir, a variável strMsg string está disponível para qualquer procedimento definido no módulo. Quando o segundo procedimento é chamado, ele exibe o conteúdo da variável strMsg de cadeia de caracteres em uma caixa de diálogo.
' Add following to Declarations section of module.
Private strMsg As String
Sub InitializePrivateVariable()
strMsg = "This variable can't be used outside this module."
End Sub
Sub UsePrivateVariable()
MsgBox strMsg
End Sub
Observação
Procedimentos públicos em um módulo padrão ou módulo de classe estão disponíveis para qualquer projeto de referência. Para limitar o escopo de todos os procedimentos em um módulo ao projeto atual, adicione uma instrução Option Private Module à seção Declarações do módulo. Variáveis e procedimentos públicos ainda estarão disponíveis para outros procedimentos no projeto atual, mas não para projetos de referência.
Escopo de nível de módulo público
Se você declarar uma variável de nível de módulo como pública, ela estará disponível para todos os procedimentos do projeto. No exemplo a seguir, a variável string pode ser usada por qualquer procedimento em qualquer módulo do projeto.
' Include in Declarations section of module.
Public strMsg As String
Todos os procedimentos são públicos por padrão, exceto os procedimentos de evento. Quando o Visual Basic cria um procedimento de evento, a Privatepalavra-chave é inserida automaticamente antes da declaração do procedimento. Para todos os outros procedimentos, você deve declarar explicitamente o procedimento com a palavra-chave Private se não quiser que ele seja público.
Use procedimentos, variáveis e constantes públicos definidos em módulos padrão ou módulos de classe de projetos de referência. No entanto, primeiro você deve definir uma referência ao projeto no qual elas estão definidas.
Procedimentos públicos, variáveis e constantes definidos em módulos diferentes do padrão ou de classe, como módulos de formulário ou módulos de relatório, não estão disponíveis para projetos de referência, pois esses módulos são privados para o projeto no qual residem.
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.