120 Lições | Gratuito Online | Autor: Júlio Battisti
O escopo de uma variável, define em que partes do código a variável pode ser utilizada. Em VBA, podemos ter os seguintes escopos para as variáveis:
Uma variável declarada dentro do Módulo (um módulo pode conter um ou mais procedimentos ou funções, cada procedimento função começa com um Sub ou Function e termina com um End Sub ou End Function, respectivamente. Veremos mais sobre funções e procedimentos, nas próximas lições), mas fora de qualquer procedimento. Com isso a variável pode ser utilizada dentro de todo o bloco de código do Módulo, inclusive dentro dos Procedimentos, caso exista algum.
Um módulo de uma planilha pode conter uma ou mais macros, sendo que cada macro é um procedimento, isto é, inicia com um Sub e termina com um End Sub. Tudo o que estiver entre Sub e End Sub, faz parte da respectiva macro. Uma variável declarada ao nível de Módulo, existe enquanto o Módulo estiver sendo executado.São as variáveis declaradas na seção de Declarações do Módulo. Uma variável declarada ao nível de Módulo, poderá ser utilizada em todos os procedimentos/funções do módulo, isto é, em todas as macros que fazem parte do respectivo módulo.
A variável somente pode ser utilizada, dentro do procedimento onde esta é declarada. Aqui o conceito de procedimento praticamente se confunde com o de macro, ou seja, cada macro é criada como um procedimento separado, dentro do módulo de código da planilha. Se tentarmos utilizar a variável fora do procedimento onde a ela foi declarada, não teremos acesso ao valor da variável. Uma variável declarada ao nível de procedimento, existe enquanto o procedimento estiver sendo executado.
NOTA: Um procedimento é um bloco de código que pode ser chamado em qualquer ponto do Módulo. Ao chamarmos um procedimento, a execução é deslocada para dentro do procedimento. Após concluído o procedimento, a execução segue com a linha seguinte à que chamou o procedimento. Veremos maiores detalhes sobre procedimentos e funções nas próximas lições.
Vamos considerar alguns trechos de código para entendermos melhor este conceito de escopo de uma variável.
Considere o seguinte trecho de código, dentro de um módulo VBA de uma planilha do Excel:
'Seção geral do módulo.
' Variáveis declaradas nessa seção tem o escopo de módulo,
' isto é, podem ser utilizadas em qualquer procedimento dentro do módulo.
Dim x, y,aux1 As Integer
Call proc1
' Agora vamos tentar utilizar os valores de a e b
' Fora do procedimento proc1.
' Observe que a variável aux1 não é calculada
' corretamente, uma vez que os valores de a e b
' não estão disponíveis, fora do procedimento proc1
Aux1 = a + b
MsgBox "aux1= " & Aux1
'Agora vamos criar um procedimento
'E declarar duas variáveis dentro deste procedimento.
'Estas variáveis somente serão visíveis,
'Dentro deste procedimento.
Sub proc1()
Dim a, b
x=10
y=20
a=5
b=7
MsgBox "x= " & x & " y= " & y & " a= " & a & " b= " & b
End Sub
O comando Call faz o chamado ao procedimento proc1. Este procedimento deve ser definido no mesmo módulo, caso contrário um erro será gerado. Ao encontrar esse comando o Excel desloca a execução para o procedimento proc1, executa os comandos deste procedimento e após encerrar continua a execução a partir do comando seguinte ao comando Call.
Ao executar esse código será exibida a janela indicada na Figura a seguir:
O comando Call Proc1 é executado. O excel executa os comandos dentro de Proc1. As variáveis x e y foram declarados com escopo de módulo, por isso podem ser utilizadas corretamente dentro do procedimento Proc1, embora não tenham sido declaradas dentro desse procedimento. As variáveis x e y tem escopo de módulo, ou seja, podem ser utilizadas em qualquer procedimento, dentro do módulo. Os valores definidos para x e y, dentro do procedimento Proc1, permanecerão disponíveis, mesmo se usarmos x e y em outros procedimentos desse módulo.
Como a e b estão declaradas dentro de Proc1, o seu escopo está ativo, isso é, o Excel tem acesso aos valores de a e b. Porém observe que x e y apresentam valores nulos. Isso ocorre porque a e b foram declarados. Por isso os valores de a e b também são exibidos corretamente. Agora vamos fazer uma tentativa de usar as variáveis a e b fora do procedimento Proc1. Como elas foram declaradas dentro de Proc1, somente são "visíveis", isto é, mantém o seu valor quando Proc1 estiver sendo executada. Fora de Proc1, as variáveis a e b terão valores nulos, conforme comprovaremos logo a seguir:
Dê um clique no botão OK. Será exibida a janela indicada na figura a seguir:
Como é possível se aux1= a + b e a=5 e b=7, logo aux1 deveria ser igual a 12. O que está acontecendo? Observe que o valor da variável aux1 (foi calculado incorretamente), pois a variável aux1 depende dos valores de "a" e "b". Como as variáveis a e b foram declaradas dentro do procedimento Proc1, elas não podem ser acessadas de fora do procedimento proc1, ou seja, após a execução do procedimento ter sido encerrada.
Dê um clique no botão OK e mantenha a planilha aberta.
Com esse exemplo, foi possível verificar, na prática, o conceito de escopo (algumas vezes chamado de visibilidade) das variáveis. Na próxima lição, trataremos das Estruturas e laços de controle, que são elementos muito importantes na criação de programas VBA.
VOCÊ CONHECE A UNIVERSIDADE DO EXCEL? |
UNIVERSIDADE PRÁTICA DO EXCEL - Domine o Excel, do Básico até a Criação de Planilhas Profissionais com Excel e VBA! Aplica-se ao Excel 2019, 2016, 2013 e 2010! |
22 Cursos - 925 Vídeo-Aulas - 120:42 horas - Só R$ 97,00 |
Para Todos os Detalhes, Acesse: |