Desenvolvimento - Office
Tutorial de Programação VBA - Access - Parte 7
por Júlio Cesar Fabris Battisti
Esta é a Parte 7 do Tutorial de Programação VBA no Access. Neste tutorial falarei sobre o conceito de Escopo de Variáveis no VBA. O objetivo desta série de tutoriais é mostrar como utilizar a programação VBA para solucionar problemas complexos no Access, problemas que muitas vezes não tem como ser resolvidos sem o uso de programação.
Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avançado e VBA. Você pode adquirir os três arquivos, com todo o conteúdo deste curso, em um total de 550 páginas de conteúdo, com exemplos detalhados, passo-a-passo, por apenas R$ 10,00 para envio através de Download ou por R$ 20,00 para envio através de CD. Para saber como adquirir este curso, acesse o seguinte endereço: http://www.juliobattisti.com.br/cursos
O Escopo das variáveis, no VBA
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: Escopo de Módulo: Uma variável declarada dentro de um Múdulo de código VBA, mas fora de qualquer Procedimento (ou seja, na seção Geral do módulo). Com isso a variável pode ser utilizada dentro de qualquer bloco de código do Módulo, inclusive dentro dos Procedimentos e funções do módulo. Uma variável declarada em 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 em nível de Módulo, poderá ser utilizada em todos os procedimentos/funções do módulo.
Escopo de procedimento: A variável somente pode ser utilizada, dentro do procedimento onde esta é declarada. Se tentarmos utilizar a variável fora do procedimento, onde a ela foi declarada, não teremos acesso a ela. Uma variável declarada em 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 partes deste tutorial.
Vamos a um exemplo prático, para entendermos melhor este conceito de escopo de uma variável.
Exemplo: Vamos ir para o modo Estrutura do formulário Teste, do banco de dados Nwind.mdb e criar um botão chamado ExEscopo. Lembre-se de que você pode utilizar qualquer formulário, de qualquer banco de dados disponível, para acompanhar este exemplo. Vamos criar um procedimento associado a esse botão, onde exemplificamos o conceito de escopo de variáveis.
Para criar o exemplo proposto siga os passos indicados a seguir: Abra o banco de dados Northwind.mdb, o qual é instalado quando você instala o Access. Ou utilize qualquer banco de dados do Access, disponível em seu computador. Vá para o modo estrutura do formulário Teste. Crie um botão de comando com o nome de ExEscopo. Associe o seguinte código ao evento Ao Clicar, deste botão de comando:
Dim a,b As Integer
x=10
x=20
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
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 Access 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. Vá para a seção de Declarações do módulo e declare as seguintes variávies:
Dim x, y,aux1 As Integer
Para deslocar-se, rapidamente para a seção de Declarações, utilize a lista indicada na figura a seguir. Nesta lista selecione a opção (Geral).
Agora vamos criar o procedimento proc1, procedimento este que é chamado no evento Ao clicar do botão ExEscopo. Vá para o final do módulo e digite o seguinte código:
" Agora vamos criar um procedimento
" E declarar duas variáveis dentro deste procedimento.
" Estas variáveis somente serão visíveis somente,
" dentro deste procedimento.
Sub proc1()
Dim a, b
a=5
b=7
MsgBox "x= " & x & " y= " & y & " a= " & a & " b= " & b
End Sub
Feche o Ambiente de Desenvolvimento. Vá para o modo formulário. Dê um clique no botão ExEscopo. Seré exibida a janela indicada na Figura a seguir:
Dê um clique no botão OK. Será exibida a janela indicada na figura a seguir:
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 fora do procedimento proc1, ou seja, após a execução do procedimento ter sido encerrada. Dê um clique no botão OK. Mantenha o formulário Teste aberto. Vá para o modo Estrutura do formulário Teste.
Conclusão:
Com esse exemplo, foi possível verificar, na prática, o conceito de escopo (algumas vezes chamado de visibilidade) das variáveis. Nas próximas partes do tutorial, tratarei das Estruturas e laços de controle, que são elementos muito importantes na criação de rotinas em VBA.
Nessa sétima parte do tutorial, falei sobre o conceito de Escopo de Variáveis. Você aprendeu que existe o Escopo de Módulo e o Escopo de Procedimento. Também apresentei um exemplo prático, para ilustrar o conceito de Escopo de Variáveis.
Dica: Para um curso completo de Access, do básico ao avançado, passando por macros e programação VBA, acesse o endereço a seguir: http://www.juliobattisti.com.br/ebooksdoautor/vendacd05.asp.
- Data Bars para MS-AccessAccess
- Funcionalidades do Office usando Visual Studio for Office – Parte 3C#
- Funcionalidades do Office usando Visual Studio for Office - Parte 2C#
- Estenda as funcionalidades do Office com o Visual Studio for OfficeC#
- Como evitar processos pendurados na automação do ExcelOffice








