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 Battisti



Objetivos:

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.

Júlio Cesar Fabris Battisti

Júlio Cesar Fabris Battisti