Compartilhar via


Noções básicas sobre escopo e visibilidade

Âmbito refere-se à disponibilidade de uma variável, constante ou procedimento para utilização por outro procedimento. Existem três níveis de âmbito: nível de procedimento, nível de módulo privado e nível de módulo público.

Pode determinar o âmbito de uma variável ao declará-la. Recomendamos que declare explicitamente todas as variáveis para evitar erros de conflito de nomenclatura entre variáveis com âmbitos diferentes.

Âmbito ao nível do procedimento

Uma variável ou constante definida num procedimento não é visível fora desse procedimento. Apenas o procedimento que contém a declaração de variável pode utilizá-la. No exemplo seguinte, o primeiro procedimento apresenta uma caixa de mensagem que contém uma cadeia. O segundo procedimento apresenta 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

Âmbito ao nível do módulo privado

Pode definir variáveis e constantes ao nível do módulo na secção Declarações de um módulo. As variáveis ao 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; as variáveis privadas só estão disponíveis para os procedimentos nesse módulo. Por predefinição, as variáveis declaradas com a instrução Dim na secção Declarações são confinadas como privadas. No entanto, ao preceder a variável com o palavra-chave Privado, o âmbito é óbvio no seu código.

No exemplo seguinte, a variável strMsg de cadeia está disponível para todos os procedimentos definidos no módulo. Quando o segundo procedimento é chamado, apresenta o conteúdo da variável strMsg de cadeia numa 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

Os procedimentos públicos num módulo ou módulo de classepadrão estão disponíveis para qualquer projeto de referência. Para limitar o âmbito de todos os procedimentos num módulo ao projeto atual, adicione uma instrução Option Private Module à secção Declarações do módulo. As variáveis e procedimentos públicos continuarão disponíveis para outros procedimentos no projeto atual, mas não para referenciar projetos.

Âmbito ao nível do módulo público

Se declarar uma variável ao nível do módulo como pública, esta estará disponível para todos os procedimentos no projeto. No exemplo seguinte, a variável de cadeia pode ser utilizada por qualquer procedimento em qualquer módulo no projeto.

' Include in Declarations section of module. 
Public strMsg As String 

Todos os procedimentos são públicos por predefinição, exceto para procedimentos de eventos. Quando o Visual Basic cria um procedimento de evento, o palavra-chave Privadoé inserido automaticamente antes da declaração do procedimento. Para todos os outros procedimentos, tem de declarar explicitamente o procedimento com a palavra-chave Privada se não quiser que seja público.

Utilize procedimentos públicos, variáveis e constantes definidos em módulos padrão ou módulos de classe a partir da referência de projetos. No entanto, primeiro tem de definir uma referência para o projeto no qual estão definidos.

Os procedimentos públicos, variáveis e constantes definidos noutros módulos de classe ou padrão, como módulos de formulário ou módulos de relatório, não estão disponíveis para referenciar projetos, uma vez que estes módulos são privados do projeto em que 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.