Desenvolvimento - Office
Tutorial de Programação VBA - Access - Parte 7
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.
por Júlio Cesar Fabris BattistiEsta é 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