Вы находитесь на странице: 1из 37

Tutorial de Programao VBA - Access - Parte 1

Este o primeiro de uma srie de tutoriais sobre a Programao


VBA Visual Basic for Application, no Access.
Objetivos:
Este o primeiro de uma srie de tutoriais sobre a Programao VBA Visual Basic for Application, no Access. O objetivo mostrar como utilizar a
programao VBA para solucionar problemas complexos no Access,
problemas que muitas vezes no tem como ser resolvidos sem o uso de
programao.
Programao com o Microsoft Access - Por que utilizar?
O VBA nos oferece possibilidades de controle e personalizao para criar
aplicativos que vo alm do que possvel de ser feito usando apenas
Macros.
O VBA uma linguagem de programao interna do Microsoft Access (na
prtica a linguagem de programao para todos os aplicativos do Office:
Access, Word, Excel e Power Point). Usamos o VBA pelo mesmo motivo que
utilizamos macros - para automatizar tarefas e rotinas repetitivas,
envolvendo os diversos elementos do banco de dados (tabelas, consultas,
formulrios, relatrios, folhas de dados, macros e mdulos). No entanto, o
VBA oferece maior poder e controle mais detalhado do que as aes de
macro.
Na prtica as aes de macro duplicam as operaes que podemos realizar
manualmente, usando menus e teclas de atalho. O VBA vai alm da simples
automao de seqncias de aes de teclado e menus de comandos. O
VBA oferece um conjunto de ferramentas que lhe permite criar aplicaes
personalizadas com base nos elementos do Access e nos objetos dos bancos
de dados do Access. Por exemplo, podemos criar uma rotina em VBA em um
banco de dados chamado local.mdb. Esta rotina pode acessar dados em um
segundo banco de dados que est na rede, por exemplo, pagamentos.mdb.
A mesma rotina alm de acessar os dados pode fazer clculos,
consolidaes, gerar os resultados no formato de uma planilha do Excel e
salvar a planilha na rede ou em uma pgina da Intrante da empresa, no
formato HTML. Este apenas um pequeno exemplo do que pode ser feito
como o VBA.
Vantagens em utilizarmos o VBA:
No Curso de Access Avanado e VBA, voc aprende a utilizar macros para
automatizar algumas tarefas como a aplicao de filtros em formulrios,
sincronizao de formulrios, etc. O VBA apresenta, em relao s macros,
as seguintes vantagens:
o

Acessando um ou mais conjuntos de registros: Com aes de


macros estamos limitados a operar com o registro ou com o conjunto

de registros atualmente sendo exibido em um formulrio, relatrio ou


consulta. O VBA lhe permite trabalhar com qualquer conjunto de
registros no banco de dados ativo (arquivo .mdb que voc est
trabalhando) ou em outras banco de dados e, inclusive, com vrios
conjuntos de registros ao mesmo tempo. Por exemplo, voc pode
montar uma rotina VBA, associada a um formulrio de entrade de
pedidos, a qual faz a baixa dos produtos vendidos, automaticamente,
na tabela de estoque.
o

Manipulao de objetos: O VBA oferece mtodos de criao e


modificao dos objetos de um banco de dados do Microsoft Access.
Chamamos de objeto qualquer elemento do Microsoft Access, por
exemplo: uma tabela, uma consulta, um formulrio, relatrio, etc. Por
exemplo, poderamos usar o VBA para acessar um conjunto
determinado de registros, atravs da execuo de um comando SQL
(Veja o Tutorial de SQL no Access) para a gerao de um objeto do
tipo RecordSet. Aprenderemos o objeto RecordSet, em detalhes, nas
prximas partes deste tutorial.

Criao de funes definidas pelo usurio: Este um dos


maiores benefcios do VBA. Podemos criar funes que executam
clculos repetitivos ou clculos para os quais o Access no dispem
de uma funo pronta. Por exemplo, vrios formulrios podem conter
um campo CPF ou CNPJ. Poderamos criar, em cada formulrio, o
cdigo necessrio para a validao do DV do CPF ou CNPJ. Porm este
procedimento no o mais indicado, pois alm da duplicao do
cdigo necessrio validao do CPF ou CNPJ, teramos dificuldades
para fazer atualizaes neste cdigo, pois cada alterao teria que
ser feita em vrios locais. O ideal criarmos uma funo para
validao do DV (uma funo deve ser criada dentro de um mdulo.
Trataremos disso nas prximas partes deste tutorial.). Em cada
formulrio, onde for necessrio, chamamos a funo, passando o
valor do campo CPF ou CNPJ como parmetro. A funo calcula o DV e
retorna o resultado para o furmulrio. Desta maneira precisamos criar
uma nica funo. Quando forem necessrias alteraes, basta
alterar a funo (em um nico local, ou seja, no mdulo onde a
funo foi criada)e todos os formulrios passaro a utilizar a verso
atualizada da funo.

Definio de condies e controle de fluxo: O VBA oferece uma


variedade de comandos e estruturas para a realizao de testes
condicionais e para a repetio de um conjunto de comandos.
Aprenderemos a utilizar todas as estruturas de controle de fluxo e
testes condicionais, mais adiante.

Realizao de clculos complexos e soluo de problemas que


envolvem uma lgica complexa: Com macros impossvel a
realizao de clculos mais complexos. Com Macros no possvel a

resoluo de problemas que envolvem uma lgica complexa, como


por exemplo clculo do imposto de renda, recolhimentos de tributos,
etc.
Introduo a linguagem VBA - Visual Basic For Applications
O VBA teve origem no Visual Basic. O Visual Basic um ambiente de
desenvolvimento completo, onde podemos criar programas para o ambiente
Windows. Um programa como o Programa Para Declarao de Imposto de
Renda da Pessoa Fsica, pode ser criado utilizando-se o Visual Basic. Um
aplicativo como o Winzip ou como um sistema para controle de clientes e de
vendas, tambm poderia ser criado utilizando o Visual Basic. J o VBA uma
linguagem bastante poderosa, embora no seja to poderosa quanto o
Visual Basic, para criao de aplicativos e automao de tarefas, baseados
nos aplicativos do Microsoft Office: Access, Word, Excel, PowerPoint e
Outlook.
importante entender que existe uma diferena fundamental entre
o Visual Basic e o VBA: Com o Visual Basic possvel criar os programas
executveis, ou seja, voc cria o programa e gera os arquivos de instalao.
Nos arquivos de instalao esto todos os recursos necessrios instalao
e ao funcionamento do programa. J com o VBA no possvel criar
programas escutveis. As rotinas de programao criadas com o VBA tem
que ser executadas dentro de um dos aplicativos do Office, como por
exemplo o Access, Excel, Word, PowerPoint ou Outlook.
Onde podemos utilizar o VBA?
Existem, basicamente, duas situaes/locais diferentes onde podemos
utilizar o VBA:
o

Como resposta a um evento: Conforme descrito no Curso de


Access Avanado e VBA, o modelo de programao do ambiente
Windows baseado em Eventos. Um Evento uma ao do usurio
ao utilizar o teclado ou o mouse. Por exemplo, quando o usurio clica
em um boto de comando gerado o evento "Ao clicar" associado
com este boto. Quando o usurio altera o valor em um campo de
dados e pressiona a tecla TAB para ir para o prximo campo so
gerados dois eventos associados com o campo que foi atualizado:
"Aps atualizar" e "Ao perder o foco". Ah, tambm ser gerado o
evento "Ao receber o foco", associado com o capo para o qual foi
posicionado o cursor. Quando o usurio d um clique duplo em um
determinado elemento de uma tela do Windows, disparado o evento
"Ao clicar duas vezes", e assim por diante. Por padro nenhuma ao
programada para responder aos eventos que so disparados.
Conforme j vimos no Curso de Access Avanado e VBA, possvel
criar macros que sero executadas em resposta a um determinado
evento. Podemos utilizar o VBA para criar um procedimento (um
procedimento formado por um ou mais comandos e pode ser do

tipo Sub-procedimento ou Funo, conforme descreverei em uma das


prximas partes deste tutorial) que ser executado em resposta ao
evento. Por exemplo, podemos criar um procedimento para validar
um nmero de CPF (calcular o DV do CPF). Este procedimento pode
ser configurado para ser executado em resposta ao evento Aps
atualizar do campo CPF. O cdigo criado para ser executado em
resposta a um evento, gravada juntamente com o formulrio (ou
relatrio), onde est o elemento que dispara o evento.
o

Criao de funes e procedimentos em mdulos


separados: Se quisermos criar procedimentos ou funes que no
estejam ligados a um evento especfico em um formulrio ou relatrio
(podendo, porm serem chamados em diversos eventos diferentes,
conforme visto no Curso de Access Avanado e VBA), podemos criar
funes gravadas em Mdulos do Access. Um Mdulo um objeto do
Access cuja nica finalidade armazenar cdigo de procedimentos e
funes do VBA. Quando um procedimento ou funo definido e
armazenado em um mdulo, podemos us-lo em qualquer expresso,
como se fosse uma funo interna do Microsoft Access ou cham-lo
em resposta a um evento. Nas prximas partes deste tutorial,
criaremos, a ttulo de exemplo, uma funo chamada MsPorExtenso.
Esta funo receber um valor numrico entre 1 e 12 e ir retornar o
nome do ms correspondente, por extenso.

Agora que j falei bastante e fiz uma boa propaganda das vantagens em se
utilizar o VBA para programao no Microsoft Access, hora de
aprendermos os fundamentos bsicos desta linguagem de programao.
Bem, isso j fica para a Parte 2 deste tutorial.
Concluso:
Nesta primeira parte fiz apenas uma apresentao do que a linguagem
VBA e quando podemos utiliz-lo, bem como dos tipos de problemas que
podem ser solucionados, usando o VBA. A partir da prxima parte deste
tutorial, voc comear a aprender os fundamentos da programao VBA no
Access
Tutorial de Programao VBA - Access - Parte 2
Esta a Parte 2 do Tutorial de Programao VBA no Access. O objetivo
mostrar como utilizar a programao VBA para solucionar problemas
complexos no Access, problemas que muitas vezes no tem como ser
resolvidos sem o uso de programao.
por Jlio Cesar Fabris Battisti
1310

Objetivos:
Esta a Parte 2 do Tutorial de Programao VBA no Access. O objetivo
mostrar como utilizar a programao VBA para solucionar problemas
complexos no Access, problemas que muitas vezes no tem como ser
resolvidos sem o uso de programao.
Aprendendo VBA
Na Parte 1 voc aprendeu que possvel criar cdigo VBA associado a
eventos de formulrios ou relatrios, que possvel criar uma Macro que
executa um procedimento do VBA e que possvel criar funes
personalizadas, usando o VBA.
Um procedimento, funo ou mdulo do VBA uma seqncia de comandos
que so executados para a realizao de uma ou mais tarefas. Por exemplo,
posso escrever um grupo de comandos que acessa os dados da tabela
Pedidos e aumenta o valor de um determinado campo de acordo com
determinadas condies.
Observe o comando a seguir:
Me![NmeroDoPedido].SetFocus
Este um comando que, simplesmente, coloca o cursor no campo
NmeroDoPedido, no formulrio atual. No se preocupe em entender este
comando, agora, pois voc aprender a utilizar o VBA, em detalhes, nas
demais partes deste tutorial.
Todo comando em VBA deve seguir algumas regras de sintaxe. A sintaxe
tem a ver com a maneira como o comando escrito. Por exemplo, se voc
for utilizar a funo Day() em um comando e ao invs de Day(), utilizar
Dai(), voc ter cometido um erro de sintaxe e o comando no poder ser
executado. Os erros de sintaxe so os mais fceis de serem identificados e
corrigidos.
Os comandos do VBA so divididos, basicamente, em trs tipos:
o

Comandos bsicos do VBA: So aqueles comandos que esto


presentes em toda e qualquer linguagem de programao que se
preze. So comandos para declarao de variveis, operadores
aritmticos e lgicos, estruturas de controle e operadores para a
realizao de testes condicionais. Por exemplo, qual a linguagem que
no possui uma funo IF para a realizao de testes condicionais?

Funes internas do Microsoft Access: Existem centenas de


funes prontas, fornecidas pelo Microsoft Access e que podem ser

utilizadas em qualquer comando do VBA. Por exemplo, para


armazenarmos em uma varivel x, o valor numrico do ano da data
do sistema, poderamos utilizar o seguinte comando:
x = Year(Date())
No Curso de Access Avanado e VBA utilizamos uma srie destas funes,
tais como: Esquerda(), Direita(), Meio(), Ano(), Dia(), Ms, etc.
IMPORTANTE: Ao utilizar funes em comandos do VBA devemos, sempre,
utilizar a funo em ingls. Por exemplo, ao invs de Ano() devemos utilizar
Year(); ao invs de Ms() devemos utilizar Month() e assim por diante.
o

Objetos da hierarquia de objetos do Microsoft Office: Um objeto uma


entidade que possui propriedades (que descrevem as caractersticas
do objeto) e mtodos (que descrevem os comportamentos do objeto).
Cada aplicativo do Microsoft Office disponibiliza uma hierarquia de
objetos bem definida. Estes objetos podem ser acessados atravs de
programao. Podemos utilizar os mtodos dos objetos para realizar
determinadas aes sobre o objeto e suas propriedades para obter
informaes sobre suas caractersticas. Esta hierarquia de objetos
que torna o VBA to poderoso. graas a hierarquia de objetos do
Office que, de dentro de um banco de dados do Access, por exemplo,
podemos acessar dados de uma planilha do Excel, gravada em um
drive de rede e combinar tais dados com dados obtidos a partir de um
banco de dados , por exemplo, do Dbase (.dbf), gravado na mquina
local. Falaremos mais sobre objetos adiante. Agora, apenas a ttulo de
exemplo, alguns comandos do VBA que utilizam um objeto do tipo
RecordSet para descobrir o nmero de registros da tabela Pedidos:

Dim db As DAO.Database

Dim rs As DAO.Recordset

Dim numreg As Integer

o
o

Set db = CurrentDb()

Set rs = db.OpenRecordset("Pedidos")

numreg = rs.RecordCount

MsgBox "NMERO DE REGISTROS DA TABELA PEDIDOS: " & numreg

Quando o Microsoft Access executa estes comandos emitida a seguinte


mensagem:

Importante: No se preocupe em entender os comandos utilizados no


exemplo anterior. Vamos estudar em detalhes, uma srie de objetos,
inclusive os objetos Database e RecordSet, utilizados no exemplo anterior,
nas prximas partes deste tutorial.
Concluso:
Nesta segunda parte aprofundei um pouco a discusso sobre o que o VBA
e tambm sobre os trs tipos de comandos disponveis no VBA. Na Parte 3
voc aprender sobre o ambiente de programao do VBA e far o primeiro
exemplo prtico.

Tutorial de Programao VBA Access Parte 3


Esta a Parte 3 do Tutorial de Programao VBA no Access. O
objetivo desta srie de tutoriais mostrar como utilizar a
programao VBA para solucionar problemas complexos no Access,
problemas que muitas vezes no tem como ser resolvidos sem o
uso de programao.
por Jlio Cesar Fabris Battisti
12 2 2 8

Objetivos:
Esta a Parte 3 do Tutorial de Programao VBA no Access. O objetivo desta
srie de tutoriais mostrar como utilizar a programao VBA para
solucionar problemas complexos no Access, problemas que muitas vezes
no tem como ser resolvidos sem o uso de programao.
Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access
Avanado e VBA. Voc pode adquirir os trs arquivos, com todo o contedo
deste curso, em um total de 550 pginas de contedo, com exemplos
detalhados, passo-a-passo, por apenas R$ 20,00 para envio atravs de
Download. Para saber como adquirir este curso, Clique Aqui.

O Ambiente de Programao
O ambiente de programao , basicamente, um editor de texto com
recursos adicionais, os quais facilitam bastante o trabalho do programador.
O Microsoft Access fornece um ambiente de programao bastante
poderoso, com uma srie de recursos que facilitam a criao, utilizao e
depurao de cdigo VBA. Nesta parte do tutorial vamos aprender a utilizar
os aspectos bsicos do Ambiente de Programao do VBA.
Se no tivssemos disponvel um Ambiente de Programao, teramos que
lembrar da sintaxe de todos os comandos, dos mtodos e propriedades dos
objetos. Convenhamos que isso praticamente impossvel, pois com o VBA
temos acesso a milhares de objetos ( isso mesmo: milhares de objetos).
Cada objeto pode ter dezenas de propriedades, mtodos e colees.
O ambiente de Desenvolvimento fornece uma srie de facilidades enquanto
estamos criando nosso cdigo VBA. Por exemplo, ao digitar o nome de um
objeto e um ponto ser aberta, automaticamente, uma lista com todos os
mtodos e propriedades deste objeto. Ao invs de lembrar do nome dos
mtodos/propriedades, basta selecion-los em uma lista. Se selecionarmos
um mtodo, ao digitarmos o parnteses de abertura, ser exibida uma lista
com os argumentos esperados pelo mtodo, bem como o tipo (texto,
nmero, data, etc) de cada argumento. Se digitarmos um comando
incorretamente, o Ambiente de Desenvolvimento emite uma mensagem e
coloca em destaque o comando que foi digitado incorretamente. Estas so
apenas algumas das facilidades fornecidas pelo Ambiente de
Desenvolvimento do VBA.
Para conhecermos melhor o referido ambiente, vamos a um exemplo
prtico. Vamos abrir o banco de dados Northwind.mdb, o qual um arquivo
de exemplos que instalado juntamente com o Microsoft Access.
Criaremos um novo formulrio chamado Teste, formulrio este que no ser
baseado em nenhuma tabela/consulta, ou seja: um formulrio em branco.
Vamos adicionar um boto de comando. Quando for aberto o assistente de
comando vamos clicar no boto Cancelar. Criaremos, manualmente, cdigo
VBA associado ao evento Ao clicar do boto de comando. Ao criar o cdigo
veremos os principais Elementos/Vantagens do ambiente de
desenvolvimento. Utilizaremos o seguinte cdigo:
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim numreg As Integer

Set db = CurrentDb()
Set rs = db.OpenRecordset("Pedidos")

numreg = rs.RecordCount

MsgBox "NMERO DE REGISTROS DA TABELA PEDIDOS: " & numreg


Importante: No se preocupe em entender os comandos utilizados no
exemplo anterior. Vamos estudar em detalhes, nas prximas partes deste
tutorial, uma srie de objetos, inclusive os objetos Database e RecordSet,
utilizados no exemplo anterior.
Exemplo: Para criar o formulrio Teste, siga os passos indicados a seguir:
Importante: Este exemplo baseado na interface padro do Access 2000.
1. Abra o Microsoft Access.
2. Abra o banco de dados nwind.mdb que est na pasta Semana2 (o qual
faz parte dos arquivos de exemplos do curso de Access Avanado, conforme
descrito anteriormente). Se voc no tiver acesso ao arquivo Nwind.mdb,
poder abrir qualquer um dos arquivos de exemplos que so instalados,
automaticamente, com o Microsoft Access.
3. No painel da esquerda clique em Formulrios.
4. D um clique no boto Novo.
5. Na janela "Novo Formulrio" d um clique na opo Modo estrutura,
certifique-se de qua a lista de Escolha a tabela ou consulta... esteja em
branco e d um clique no boto OK, conforme indicado na figura a seguir:

6. Ser aberto um formulrio em branco.


7. Localize a "Caixa de Ferramentas" (explicada em detalhes no Curso
Bsico de Access, o qual Pr-requisito para acompanhamento desta srie
de tutoriais) e adicione um controle do tipo Boto de Comando (explicado

em detalhes no Curso Bsico de Access, o qual Pr-requisito para


acompanhamento desta srie de tutoriais).
8. Ser aberto o "Assistente de boto de comando".
9. D um clique no boto Cancelar, para fechar o assistente.
10. Abra as Propriedades do boto de comando e altere o seu nome para:
BotaoEx.
11. Ainda com as propriedades abertas, d um clique na guia Evento.
Clique no evento "Ao clicar".
12. D um clique no boto (...) que aparece ao lado do evento Ao abrir.
13. Na lista de opes que exibida selecione Construtor de cdigo,
conforme indicado na figura a seguir:

14. D um clique no boto OK.15. Ser aberto o ambiente de


desenvolvimento do VBA, conforme indicado na figura a seguir:

Para cada evento criado um procedimento separado. Um procedimento


um "pedao de cdigo" que executado em resposta ao evento. O nome
dos procedimentos associados a eventos segue um padro bem definido. O
padro o nome do controle (no nosso caso BotaoEx) seguido de um sinal
de sublinhado e o nome interno do evento (para o Access o evento "Ao
clicar" reconhecido como Click). Por isso, associado ao evento Ao clicar, do
controle BotaoEx, temos o seguinte procedimento:
Private Sub BotaoEx_Click()

End Sub
A palavra Private significa que o procedimento Privado, ou seja, somente
pode ser acessado de dentro do formulrio Teste. Por exemplo, no teramos
como chamar este procedimento l no formulrio Pedidos ou Clientes. O
nome do procedimento como se fosse uma funo/sub-procedimento, por
isso o abre e fecha parnteses aps o nome. O procedimento poderia
receber um ou mais parmetros de entrada e retornar um ou mais
parmetros de sada. Aprenderemos a trabalhar com parmetros mais
adiante. O final do procedimento indicado pelo comando: End Sub.
O nosso cdigo de exemplo deve ser digitado dentro dos limites do
procedimento (entre as linhas Private... e End Sub).

IMPORTANTSSIMO: ANTES DE COMEARMOS A DIGITAR O CDIGO


PROPOSTO, VAMOS ABRIR UM PEQUENO PARNTESES PARA FALAR SOBRE
REFERNCIAS.
REFERNCIAS:
Conforme descrito anteriormente, com o VBA temos acesso a milhares de
objetos. Por exemplo, de dentro de um formulrio podemos exibir dados
gravados em uma planilha do Excel, ou em um arquivo do DBase III. Para
acessarmos, de dentro do Access, dados de uma planilha do Excel,
precisamos usar os objetos adequados.
Os diversos objetos disponveis so disponibilizados atravs de Bibliotecas
de Objetos. Por exemplo, todos os objetos para acesso ao Excel, esto
agrupados em um biblioteca de objetos, todos os objetos para acesso a
dados do prprio Access, esto agrupados em uma outra Biblioteca de
objetos e assim por diante. Existem dezenas de bibliotecas, cada uma com
centenas de objetos. Para que possamos utilizar, no cdigo VBA, objetos de
uma determinada biblioteca, precisamos, antes, fazer uma REFERNCIA a
biblioteca correspondente. Ao fazer uma REFERNCIA a uma biblioteca,
passamos a ter acesso a todos os objetos da biblioteca.
Voc pode perguntar: Ento porque no feita referncia,
automaticamente, a todas as bibliotecas disponveis? Isto no feito, pois
cada referncia causa um gasto adicional de memria. Se fizssemos
referncia a todas as bibliotecas disponveis, teramos srios problemas de
desempenho.
Para o nosso exemplo temos que fazer referncia a biblioteca DAO - Data
Access Objetct. Essa biblioteca contm uma srie de objetos para acesso a
dados. Utilizaremos, intensamente, esta biblioteca nas demais partes deste
tutorial.
Para fazer referncia a um biblioteca utilizamos o comando: Ferramentas ->
Referncias, do ambiente de desenvolvimento do VBA. Ao utilizar este
comando, surge uma janela com todas as bibliotecas disponveis. Localize a
biblioteca "Microsoft DAO x.x Object Library", onde para x.x selecione a
verso de maior nmero que voc encontrar na listagem, conforme indicado
na figura a seguir:

Nota: Pode ser que a verso da biblioteca DAO instalada no seu


computador seja diferente. Selecione a verso disponvel.
D um clique no boto OK e pronto, voc ter feito referncia a biblioteca
DAO, necessria ao nosso exemplo. Fizemos referncia a esta biblioteca,
pois os objetos DataBase e RecordSet que utilizaremos, fazem parte desta
biblioteca. Aprenderemos a utilizar estes objetos, em maiores detalhes, nas
prximas partes deste tutorial. Aqui fechamos o nosso pequeno parnteses
sobre REFERNCIAS.
16. Vamos comear a digitar o cdigo do nosso exemplo, para que
possamos observar mais algumas funcionalidades do Ambiente de
Desenvolvimento.
Abaixo da linha Private..., digite o seguinte:
Dim db As DAO.Database
17. Observe que aps digitar a palavra As e pressionar a barra de espaos
aberta uma listagem com todas as opes disponveis. Voc digita D e a
listagem posicionada no primeiro elemento que comea com a letra D.
Selecione DAO, conforme indicado na figura a seguir:

18. Aps selecionar DAO digite um ponto. Observe que, novamente,


aberta uma listagem com todos os objetos disponveis na biblioteca DAO. Na
lista de objetos selecione Database, conforme indicado na prxima figura.
importante salientar que no pode haver espao entre o ponto (.)
e o nome do objeto. Essa uma regra geral: No existe espao
entre dois nomes separados por ponto (.) ou por ponto de
exclamao (!).

Esta sem dvida uma das maiores vantagens do Ambiente de


Desenvolvimento. Ao digitar o nome do objeto e um ponto,
automaticamente exibida uma lista dos mtodos/propriedades disponveis

para o objeto em questo. Essa facilidade importantssima, pois evita que


tenhamos que decorar o nome dos mtodos/propriedades que mais
utilizamos.
19. Digite o restante do cdigo, indicado a seguir:
Dim rs As DAO.Recordset
Dim numreg As Integer

Set db = CurrentDb()
Set rs = db.OpenRecordset("Pedidos")

numreg = rs.RecordCount
MsgBox "NMERO DE REGISTROS DA TABELA PEDIDOS: " & numreg
Observe que a medida que voc vai digitando o nome dos objetos, as listas
com o nome das propriedades/mtodos vo sendo exibidas.
O Ambiente de Desenvolvimento tambm oferece uma srie de menus e
botes de comando. A medida que formos utilizando estes comandos iremos
explicando cada um deles.
20. Agora vamos salvar o procedimento BotaoEx_Click(). D um clique no
boto Salvar (boto com a figura do disquete). Ser aberta uma janela
pedindo o nome do Formulrio: Digite Teste e d um clique no boto OK,
conforme indicado na prxima figura:

21. Clique no boto "x" de cima para fechar o Ambiente de


Desenvolvimento.
22. Voc estar de volta ao modo estrutura do formulrio Teste.
23. Agora vamos testar o cdigo recm criado.
24. Altere a legenda do boto para Exemplo de VBA!
25. V para o modo Formulrio.
26. D um clique no boto Exemplo de VBA.

27. Ser exibida a mensagem indicada na figura a seguir:

28. D um clique no boto OK para fechar essa mensagem.


29. Feche o formulrio Teste.
30 Feche o Microsoft Access.
Concluso:
Nessa terceira parte do tutorial, abordei os aspectos bsicos do Ambiente
de Desenvolvimento. Nas demais partes deste tutorial, utilizarei, em
diversos momentos, o Ambiente de Desenvolvimento. A medida que formos
utilizando este Ambiente, aprenderemos sobre as demais funcionalidades do
Ambiente.
Tutorial de Programao VBA - Access - Parte 4
O objetivo desta srie de tutoriais mostrar como utilizar a
programao VBA para solucionar problemas complexos no Access,
problemas que muitas vezes no tem como ser resolvidos sem o
uso de programao.
por Jlio Cesar Fabris Battisti
1000

Objetivos:
Esta a Parte 4 do Tutorial de Programao VBA no Access. O objetivo desta
srie de tutoriais mostrar como utilizar a programao VBA para
solucionar problemas complexos no Access, problemas que muitas vezes
no tem como ser resolvidos sem o uso de programao.
Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access
Avanado e VBA. Voc pode adquirir os trs arquivos, com todo o contedo
deste curso, em um total de 550 pginas de contedo, com exemplos
detalhados, passo-a-passo, por apenas R$ 10,00 para envio atravs de

Download ou por R$ 15,00 para envio atravs de CD. Para saber como
adquirir este curso, Clique Aqui.
Anatomia dos Mdulos do VBA
O cdigo VBA escrito em unidades chamadas sub-rotinas ou funes que
so armazenadas em mdulos. Os mdulos do Microsoft Access podem ser
de dois tipos:
Mdulos Padro (Standard modules)
Mdulos de Classes (Class modules)
Mdulos padro: So criados a partir da opo Mdulos, em um banco
de dados do Access. Os procedimentos e funes criados neste tipo de
mdulo podem ser utilizados a partir de outros mdulos, em formulrios e
relatrios. Por exemplo, posso criar um mdulo padro chamado "Funes
de Validao". Neste mdulo crio uma funo para validao do CPF, outra
para validao do CNPJ e uma terceira para validao do nmero de
processos. A partir de qualquer formulrio ou relatrio posso "chamar" as
funes contidas no mdulo "Funes de Validao". Esta uma maneira de
"reaproveitar" as funes que criamos, ou seja, criamos uma nica vez e
utilizamos nos vrios locais onde a funo for necessria.
Mdulos de classe: Podem ser criados como Mdulos padro ou podem
ser associados a um formulrio ou relatrio. Ao criarmos cdigo associado
com um evento em um formulrio ou relatrio, o Microsoft Access,
automaticamente, cria um mdulo associado com o formulrio/relatrio.
Anatomia de um mdulo VBA: Um mdulo VBA formado por uma seo
de declaraes e uma srie de funes/procedimentos. A diferena bsica
entre funo e procedimento que a funo retorna um ou mais valores e o
procedimento simplesmente executa uma srie de comandos, sem retornar
valores. Na seo de declaraes podemos declarar variveis e outros
comandos especiais que tero efeito sobre todos os componentes do
mdulo.
Quando criamos um mdulo associado a um formulrio, temos uma srie de
procedimentos. Cada vez que criamos cdigo em resposta a um evento,
criado um novo procedimento no modo associado ao formulrio.
A seguir temos um exemplo de uma estrutura genrica de um mdulo.
" ANATOMIA DE UM MDULO DO VBA.

"Seo de declaraes, as opes/variveis


"desta seo so acessveis em qualquer parte do mdulo.

Option Compare Database


Option Explicit

"Incio do procedimento 1 - Sub1

Private Sub Sub1()


Comando1 do Sub1
Comando2 do Sub1
...
Comandon do Sub1
End Sub

"Final do procedimento 1 - Sub1

"Incio do procedimento 2 - Sub2

Private Sub Sub2()


Comando1 do Sub2
Comando2 do Sub2
...
Comandon do Sub2
End Sub

"Final do procedimento 2 - Sub2

...

"Incio do procedimento n - Subn

Private Sub Subn()


Comando1 do Subn
Comando2 do Subn
...
Comandon do Subn
End Sub

"Final do procedimento n - Subn


Nota: As linhas que iniciam com um apstrofe so linhas de comentrio,
isto , no sero executadas pelo Microsoft Access. O uso de comentrios
uma forma de fazer a documentao do cdigo VBA, o que facilita a
compreenso e manuteno de nossas rotinas.
Agora chegou o momento de estudarmos os principais comandos do VBA.
Isso ser feito a partir da Parte 5, deste tutorial
Concluso:
Nessa quarta parte do tutorial, falei sobre Mdulos e apresentei a anatomia
de um mdulo de cdigo no VBA. Nos mdulos posso criar funes e
procedimentos, os quais podero ser utilizados pelos demais elementos do
banco de dados. Por exemplo, posso criar uma funo para validao do DV
do CPF e utiliz-la nas consultas, formulrios e relatrios do banco de dados

Tutorial de Programao VBA - Access - Parte 5


Neste tutorial falarei sobre o tipo de dados e sobre declarao de
variveis no VBA.
por Jlio Cesar Fabris Battisti
6001

Objetivos:

Esta a Parte 5 do Tutorial de Programao VBA no Access. Neste tutorial


falarei sobre o tipo de dados e sobre declarao de variveis no VBA. O
objetivo desta srie de tutoriais mostrar como utilizar a programao VBA
para solucionar problemas complexos no Access, problemas que muitas
vezes no tem como ser resolvidos sem o uso de programao.
Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access
Avanado e VBA. Voc pode adquirir os trs arquivos, com todo o contedo
deste curso, em um total de 550 pginas de contedo, com exemplos
detalhados, passo-a-passo, por apenas R$ 10,00 para envio atravs de
Download ou por R$ 15,00 para envio atravs de CD. Para saber como
adquirir este curso, Clique Aqui.
Tipos de dados - Declarao e "tipo" de varivel:
Uma varivel um espao na memria do computador, reservado para
armazenar um ou mais valores. Fazemos referncia a este espao utilizando
nomes. Como o valor armazenado pode variar, a medida que o cdigo VBA
executado e clculos so efetuados, estas estruturas so chamadas de
variveis.
No VBA, a declarao de variveis no obrigatria. Porm recomendvel
que declaremos todas as variveis, de tal forma que o cdigo fique mais
claro e de fcil compreenso. Para declararmos uma varivel, utilizamos o
comando Dim, conforem exemplificado abaixo:
Dim x
Dim nome
Dim teste
Neste caso estamos apenas declarando o nome da varivel, sem declarar
de que tipo (texto, inteiro, data, etc) a varivel. Uma varivel declarada
sem tipo considerada do tipo Variant, o que na prtica significa que a
varivel pode conter qualquer tipo de valor. Pode parecer uma prtica
interessante a no declarao do tipo da varivel, porm isso altamente
desaconselhvel. Se no declararmos o tipo, conforme descrito
anteriormente, a varivel poder conter qualquer valor. Neste caso o que
impede de um campo numrico conter valores de texto ou vice-versa??
Nota: Para exemplificar os diversos comandos bsicos da linguagem VBA,
vamos utilizar o um formulrio de Teste. Para cada comando que ser
exemplificado, crie um novo boto de comando e atribua, ao evento Ao
clicar do boto, o cdigo do Exemplo. Para facilitar o estudo, nomeie o boto
com um nome relacionado com o exemplo que este representa. Por
exemplo, ao criar o boto para exemplificar o uso de operadores
aritmticos, chame este boto de ExOperAritmticos. Para maiores
informaes sobre como criar cdigo associado ao evento Ao clicar de um
boto, consulte o Curso de Access Avanado e VBA.
O formato geral para o comando Dim :

Dim nome_da_varivel As tipo_da_varivel


Tambm podemos declarar mais do que uma varivel, com um nico
comando Dim. Para isto, basta separar as variveis, com vrgula, conforme
exemplificado abaixo:
Dim x,y,z As String
Dim nome as Double
Dim teste1, teste2 As Integer
IMPORTANTE: Observe que definimos o "tipo" de cada varivel. O Tipo define
quais dados podem ser armazenados em uma varivel. Por exemplo,
variveis que armazenam valores numricos, no devem aceitar caracteres
de texto. Variveis que armazenam datas, no devem aceitar datas
invlidas, como por exemplo 30/02/2001. Toda varivel no VBA, do tipo
Variant, isto significa que a varivel pode ser de qualquer tipo. O que define
o tipo da varivel o valor que est armazenado no momento. Existem
funes que converso de tipo, conforme veremos mais adiante.
Tambm podemos utilizar variveis que no foram, explicitamente,
declaradas com o comando Dim. Com isso, a varivel criada na memria,
no momento da sua utilizao. Para fazer com que toda varivel tenha que
ser, explicitamente, declarada, antes de ser utilizada, devemos utilizar o
seguinte comando na seo de declaraes do mdulo:
Option Explicit
Ao colocarmos este comando na seo de declaraes do mdulo, estamos
definindo que toda varivel deve ser declarada, antes de ser utilizada em
uma expresso. Se tentarmos utilizar uma varivel no declarada, ser
gerado um erro de compilao. Falaremos mais sobre erros e o tratamento
de erros, em uma das prximas partes deste tutorial
Na Listagem 1, temos um exemplo simples de utilizao de variveis no
declaradas explicitamente.
Listagem 1 - Utilizao de variveis no declaradas.
Dim a As Integer
Dim b As Integer
a=5
b=2
c=a+b
Msgbox "A varivel C vale: " & c
Ao tentarmos executar este cdigo, tendo sido definida a opo "Option
Explicit", obteremos a mensagem de erro indicada na prxima figura. Este

erro acontece porque tentamos utilizar uma varivel c, varivel esta que
no foi declarada.

O tipo Variant formado de pequenas unidades, chamadas subtipos. Cada


subtipo, identifica de que maneira os dados so armazenados em uma
varivel do tipo Variant Por exemplo, variveis do subtipo Integer so
armazenadas de uma maneira diferente de variveis do subtipo Long. Na
Tabela a seguir temos uma descrio dos principais subtipos.
Tabela - Subtipos do tipo Variant
Subtipo Descrio
Empty

O Valor zero para variveis numricas ou uma String de


tamanho zero (" "), para variveis de texto.

Null

A varivel no contm dados vlidos.

Boolean

Contm variveis que somente podem assumir dois


valores:Verdadeiro ou Falso (True ou False).

Byte

Valor inteiro, na faixa de 0 at 255.

Integer

Valor inteiro, na faixa de -32768 at 32767.

Currenc
y

Valores na faixa de -923.337.203.685.447,5808 at


922.337.203.685.447,5807

Long

Valor inteiro, na faixa de -2.147.483.648 at 2.147.483.647.

Date(Ti
me)

um nmero que representa a data entre 01 de Janeiro do ano


100, at 31 de Dezembro de 9999 (Olha o bug do ano 10000
chegando).

String

Texto de tamanho varivel, pode conter, aproximadamente, 2


bilhes de caracteres.

Object

Pode conter um objeto qualquer, como um Controle Activex, ou


um Objeto COM+

Error

Pode conter um nmero de erro.

Concluso:
Nessa quinta parte do tutorial, falei sobre o conceito de variveis,
declarao de variveis e o uso do comando Dim. Tambm falei sobre tipos
de variveis e subtipos do tipo Variant. Voc tambm aprendeu que a
declarao Option Explicit, pode ser utilizada na seo de declaraes do
mdulo, para fazer com que seja obrigatria a declarao das variveis.
Tutorial de Programao VBA Access Parte 6
Esta a Parte 6 do Tutorial de Programao VBA no Access. Neste
tutorial falarei sobre operadores aritmticos e de comparao.
por Jlio Cesar Fabris Battisti
1000

Objetivos:
Esta a Parte 6 do Tutorial de Programao VBA no Access. Neste tutorial
falarei sobre operadores aritmticos e de comparao. Durante o tutorial eu
peo para voc abrir um banco de dados, abrir um formulrio no modo
estrutura e criar o cdigo do exemplo. Voc pode utilizar qualquer banco de
dados disponvel Eu sugiro que voc utilize o banco de dados de Exemplo Northwind.mdb, o qual fornecido juntamente com o Microsoft Access.
Dentro do Northwind.mdb, voc pode utilizar qualquer formulrio, como por
exemplo Clientes, Fornecedores ou Produtos.
Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access
Avanado e VBA. Voc pode adquirir os trs arquivos, com todo o contedo
deste curso, em um total de 550 pginas de contedo, com exemplos
detalhados, passo-a-passo, por apenas R$ 10,00 para envio atravs de
Download ou por R$ 15,00 para envio atravs de CD. Para saber como
adquirir este curso, Clique Aqui.
Fazendo clculos e comparaes com o VBA - Uso de Operadores:

Para realizarmos clculos e comparaes entre variveis, utilizamos


operadores. Neste item trataremos sobre operadores aritmticos e
operadores de comparao.
Fazendo clculos com os Operadores aritmticos:
Podemos realizar clculos no VBA, utilizamos operadores aritmticos. Na
Tabela a seguir, temos uma descrio dos operadores aritmticos utilizados
no VBA:
TABELA - Operadores Aritmticos do VBA
Operador

Smb
olo

Descrio

Adio

Soma o valor de duas ou mais


variveis.

Subtrao

Subtrao entre duas ou mais


variveis.

Multiplicao

Multiplica os valores de duas ou mais


variveis.

Diviso

Divide o valor de duas ou mais


variveis.

Inteiro da Diviso entre


dois nmeros

Retorna a parte inteira, da diviso


entre dois nmeros.

Exponenciao

x^y -> o valor do nmero x,


elevado na potncia y

Modulo

Mod

Retorna o resto de uma diviso de 2


nmeros.

Exemplo: Vamos abrir o formulrio Teste, do banco de dados Nwind.mdb e


criar um boto chamado ExOperadores. Lembre-se, voc pode utilizar
qualquer formulrio, de qualquer banco de dados disponvel. Depois vamos
criar um procedimento associado ao evento Ao Clicar deste boto, onde
exemplificarei o uso dos diversos operadores aritmticos.
Para criar o exemplo proposto, siga os passos indicados a seguir:
o

Abra o banco de dados nwind.mdb que est na pasta Semana2.

Abra, o formulrio Teste no modo Estrutura.

Crie um boto de comando com o nome de ExOperadores.

Associe o seguinte cdigo ao evento Ao abrir, deste boto de


comando:

Dim a As Integer

Dim b As Integer

Dim som, subtr, divis, mult, intdivs, expo, modul As Double

o
o

a=25

b=3

o
o

som=a+b

subtr=a-b

divis=a/b

mult=a*b

intdivs=a\b

expo=a^b

modul= a mod b

o
o

"Uso de MsgBox para exibir os resultados.

o
o

MsgBox "Os nmeros so: " & a & " e " & b & Chr(13)

MsgBox "Soma: " & som & Chr(13)& "Subtrao: " & subtr & Chr(13)

MsgBox "Diviso: " & divis & Chr(13)& "Multiplicao: " & mult &
Chr(13)

MsgBox "Diviso inteira: " & intdivs & Chr(13)& "Exponenciao: " &
expo & Chr(13)

MsgBox "Resto da diviso: " & modul

Aps digitar o cdigo Feche o Ambiente de Desenvolvimento.

Salve o Formulrio.

V para o modo Formulrio e d um clique no boto "ExOperadores".

Ser exibida a seguinte mensagem:

D um clique no boto OK.

Ser exibida a seguinte mensagem:

D um clique no boto OK.

Ser exibida a seguinte mensagem:

D um clique no boto OK.

Ser exibida a seguinte mensagem:

D um clique no boto OK.

Ser exibida a seguinte mensagem:

D um clique no boto OK.

Voc estar de volta ao formulrio Teste.

Mantenha este formulrio carregado. Iremos utiliz-lo nos prximos


exemplos.

Neste exemplo utilizamos os operadores aritmticos, para realizar uma srie


de operaes com os valores atribudos s variveis "a" e "b". Depois
utilizamos a funo MsgBox, para exibir os resultados obtidos. O uso da
funo MsgBox, merece alguns comentrios. Primeiro, utilizamos a funo
MsgBox, para exibir mensagens em uma pequena janela, chamada de
Janela Pop-Up. Podemos exibir texto e tambm valores de variveis. Quando
temos que exibir diversos componentes, como um pouco de texto, em
seguida o valor de uma varivel, depois mais texto, e assim por diante,
devemos utilizar o operador de concatenao &. Este operador permite
que as diversas partes sejam exibidas como uma nica mensagem.
Considere o exemplo da seguinte linha de cdigo:
MsgBox "Os nmeros so: " & a & " e " & b & Chr(13)
Neste exemplo, primeiro exibido o texto: "Os nmeros so:" , logo em
seguida o valor da varivel a. Observe que as duas partes so concatenadas
com o operador &. Depois concatenamos o valor da varivel b, e finalmente
utilizamos a funo Chr(13). A funo Chr(nmero), envia o caracter
correspondente ao nmero digitado entre parnteses. Este nmero, o
nmero do caracter no padro ASCII (American Standard Caracter
Interchange Information). No cdigo ASCII, cada caracter possui um nmero
associado. No caso o nmero 13, associado ao <ENTER>. Com isso
estamos enviando um <ENTER>, para a caixa de mensagem, o que
equivale a uma troca de linha. Com isso, utilizamos o Chr(13), para simular
um <ENTER>, de tal maneira que os dados no saiam todos "emendados",
na mesma linha.
Com o uso de operadores, podemos realizar uma srie de operaes sobre
as variveis existentes em mdulo de cdigo do VBA.
Comparando valores com os Operadores de comparao:
Em determinadas situaes, existe a necessidade de efetuarmos
comparaes entre os valores de duas ou mais variveis ou expresses.
Com base no resultado da comparao - Verdadeiro ou Falso -, a
execuo do cdigo VBA pode seguir caminhos diferentes. Normalmente
utilizamos comparaes, nas estruturas de controle do cdigo, tambm

conhecidas como laos de controle (laoes estes que sero estudados, em


detalhes, em uma das prximas partes deste tutorial). Para que possamos
estudar os operadores de comparao, vamos apresentar uma das
estruturas de controle mais simples que existem no VBA, a estrutura If Then
Else. Abaixo temos um exemplo do funcionamento da estrutura If Then Else:
If x>y Then

" Comandos a serem executados quando x for maior do que y


Comando 1
Comando 2
...
Comando n

Else

" Comandos a serem executados quando x for menor ou igual a y


Comando 1
Comando 2
...
Comando n

End If
Conforme podemos ver, a estrutura If Then Else, bastante simples.
Fazemos um teste no incio da estrutura. Se o valor do teste for verdadeiro,
executamos os comandos na seqncia, caso contrrio, executamos os
comandos aps o Else. Note que utilizamos o operador de comparao
"maior do que: >", no caso x>y, estamos testando se x maior do que y.
Podemos utilizar laos If Then Else mais complexos, como os do exemplo:
If x>y Then

" Comandos a serem executados quando x for maior do que y


Comando 1

Comando 2
...
Comando n

ElseIf x=y Then

" Comandos a serem executados quando x for igual a y


Comando 1
Comando 2
...
Comando n

Else

" Comandos a serem executados quando x for menor do que y


Comando 1
Comando 2
...
Comando n

End If
Podemos utilizar tantos ElseIf, quantos forem necessrios.
Na Tabela a seguir temos uma descrio dos operadores de comparao do
VBA.
Tabela - Operadores de comparao do VBA.
Operador

Smbolo

Descrio

Igualdade

igual .

Diferente

<>

diferente de.

Maior que

>

maior do que.

Menor que

<

menor do que.

Maior ou igual a

>=

maior ou igual a.

Menor ou igual a

<=

menor ou igual a.

Exemplo: Vamos ir para o modo Estrutura do formulrio Teste, do banco de


dados Nwind.mdb e criar um boto chamado ExOperadoresComparao.
Lembre-se que voc pode utilizazar qualquer formulrio, de qualquer banco
de dados disponvel. Vamos criar um procedimento associado ao evento Ao
Clicar deste boto, onde exemplificamos o uso dos diversos operadores de
comparao do VBA. Para criar o exemplo proposto, siga os passos
indicados a seguir:
o

V para o modo estrutura do formulrio Teste.

Crie um boto de comando com o nome de


ExOperadoresComparao.

Associe o seguinte cdigo ao evento Ao abrir, deste boto de


comando:

Dim x,y,z,k As Integer

o
o

x=12

y=15

z=20

k=15

o
o
o
o
o
o

If x<y Then
MsgBox "x menor do que y."
Else
MsgBox "x maior do que y."
End If

o
o
o
o
o
o

If y<x Then
MsgBox "Y menor do que x"
Else
MsgBox "Y maior do que x"
End If

o
o
o
o
o
o

If y<=k Then
MsgBox "y menor ou igual k"
Else
MsgBox "Y maior do que k"
End If

o
o
o

If x<>y Then
MsgBox "x e y so diferentes"

End If

Aps digitar o cdigo Feche o Ambiente de Desenvolvimento.

Salve o Formulrio.

V para o modo Formulrio e d um clique no boto


"ExOperadoresAritmticos".

Ser exibida a seguinte mensagem:

D um clique no boto OK.

Ser exibida a seguinte mensagem:

D um clique no boto OK.

Ser exibida a seguinte mensagem:

D um clique no boto OK.

Ser exibida a seguinte mensagem:

D um clique no boto OK.

Voc estar de volta ao formulrio teste.

O uso de Operadores de comparao, amplia o leque de possibilidades para


nossos programas em VBA. Devemos ter alguns cuidados quando
comparamos variveis que possuem valores de tipos diferentes, como por
exemplo, nmero e texto. A Tabela a seguir descreve o que acontece,
quando comparamos variveis com valores de tipos diferentes.
Tabela - Comparando valores de tipos diferentes.
Comparao

Resultado

Entre duas variveis com


valores numricos.

Comparao normal.

Entre duas variveis com


valors do tipo texto.

efetuada uma comparao entre valores


de texto. Por exemplo Xuxa maior do
que Abel (X vem depois do A).

Uma das variveis possui um

O valor numrico ser sempre

valor numrico e outra possui


um valor de texto

considerado menor do que o valor de


texto.

Uma das variveis possui um


valor numrico e a outra est
vazia.

Efetua uma comparao numrica,


atribuindo 0 (zero) para a varivel vazia.

Uma varivel possui um valor


de texto e a outra est vazia,
sem valor.

Efetua uma comparao de texto,


atribuindo texto de comprimento zero ("
")para a varivel vazia.

As duas variveis possuem


um valor vazio.

So consideradas iguais.

Com a utilizao dos operadores aritmticos e de comparao, ampliamos


bastante o leque de opes, na criao de cdigos com o VBA. No Parte 7,
veremos alguns detalhes sobre "Escopo" de variveis.
Concluso:
Nessa sexta parte do tutorial, falei sobre elementos fundamentais da
linguagem VBA - Operadores. Tratei sobre operadores aritmticos e
operadores de comparao. Os operadores so utilizados em qualquer
exemplo de cdigo VBA. No possvel fazer clculos e testes de
comparao entre variveis, sem o uso de operadores.

Tutorial de Programao VBA - Access - Parte 7


Esta a Parte 7 do Tutorial de Programao VBA no Access. Neste
tutorial falarei sobre o conceito de Escopo de Variveis no VBA.
por Jlio Cesar Fabris Battisti
0000

Objetivos:
Esta a Parte 7 do Tutorial de Programao VBA no Access. Neste
tutorial falarei sobre o conceito de Escopo de Variveis no VBA. O
objetivo desta srie de tutoriais mostrar como utilizar a
programao VBA para solucionar problemas complexos no Access,

problemas que muitas vezes no tem como ser resolvidos sem o


uso de programao.
Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso
de Access Avanado e VBA. Voc pode adquirir os trs arquivos,
com todo o contedo deste curso, em um total de 550 pginas de
contedo, com exemplos detalhados, passo-a-passo, por apenas R$
10,00 para envio atravs de Download ou por R$ 20,00 para envio
atravs de CD. Para saber como adquirir este curso, acesse o
seguinte endereo: http://www.juliobattisti.com.br/cursos
O Escopo das variveis, no VBA
O escopo de uma varivel, define em que partes do cdigo a
varivel pode ser utilizada. Em VBA, podemos ter os seguintes
escopos para as variveis:
Escopo de Mdulo: Uma varivel declarada dentro de um Mdulo de
cdigo VBA, mas fora de qualquer Procedimento (ou seja, na seo
Geral do mdulo). Com isso a varivel pode ser utilizada dentro de
qualquer bloco de cdigo do Mdulo, inclusive dentro dos
Procedimentos e funes do mdulo. Uma varivel declarada em
nvel de Mdulo, existe enquanto o Mdulo estiver sendo
executado. So as variveis declaradas na seo de Declaraes do
Mdulo. Uma varivel declarada em nvel de Mdulo, poder ser
utilizada em todos os procedimentos/funes do mdulo.
Escopo de procedimento: A varivel somente pode ser utilizada,
dentro do procedimento onde esta declarada. Se tentarmos
utilizar a varivel fora do procedimento, onde a ela foi declarada,
no teremos acesso a ela. Uma varivel declarada em nvel de
procedimento, existe enquanto o procedimento estiver sendo
executado.
NOTA: Um procedimento um bloco de cdigo que pode ser
chamado em qualquer ponto do Mdulo. Ao chamarmos um
procedimento, a execuo deslocada para dentro do
procedimento. Aps concludo o procedimento, a execuo segue
com a linha seguinte que chamou o procedimento. Veremos
maiores detalhes sobre procedimentos e funes nas prximas
partes deste tutorial.
Vamos a um exemplo prtico, para entendermos melhor este
conceito de escopo de uma varivel.
Exemplo: Vamos ir para o modo Estrutura do formulrio Teste, do
banco de dados Nwind.mdb e criar um boto chamado ExEscopo.
Lembre-se de que voc pode utilizar qualquer formulrio, de
qualquer banco de dados disponvel, para acompanhar este

exemplo. Vamos criar um procedimento associado a esse boto,


onde exemplificamos o conceito de escopo de variveis.
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, disponvel em seu computador.
V para o modo estrutura do formulrio Teste.
Crie um boto de comando com o nome de ExEscopo.
Associe o seguinte cdigo ao evento Ao Clicar, deste boto 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 varivel aux1 no calculada
" corretamente, uma vez que os valores de a e b
" no esto disponveis, 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 mdulo, caso contrrio
um erro ser gerado. Ao encontrar esse comando o Access desloca
a execuo para o procedimento proc1, executa os comandos deste
procedimento e aps encerrar continua a execuo a partir do
comando seguinte ao comando Call.
V para a seo de Declaraes do mdulo e declare as seguintes
varivies:

Dim x, y,aux1 As Integer


Para deslocar-se, rapidamente para a seo de Declaraes, utilize
a lista indicada na figura a seguir. Nesta lista selecione a opo
(Geral).

Agora vamos criar o procedimento proc1, procedimento este que


chamado no evento Ao clicar do boto ExEscopo.
V para o final do mdulo e digite o seguinte cdigo:
" Agora vamos criar um procedimento
" E declarar duas variveis dentro deste procedimento.
" Estas variveis somente sero visveis 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 formulrio.
D um clique no boto ExEscopo.
Ser exibida a janela indicada na Figura a seguir:

D um clique no boto OK. Ser exibida a janela indicada na figura


a seguir:

Observe que o valor da varivel aux1 (foi calculado


incorretamente), pois a varivel aux1 depende dos valores de "a" e
"b". Como as variveis a e b foram declaradas dentro do
procedimento proc1, elas no podem ser acessadas fora do
procedimento proc1, ou seja, aps a execuo do procedimento ter
sido encerrada.
D um clique no boto OK.
Mantenha o formulrio Teste aberto.
V para o modo Estrutura do formulrio Teste.
Concluso:
Com esse exemplo, foi possvel verificar, na prtica, o conceito de
escopo (algumas vezes chamado de visibilidade) das variveis. Nas
prximas partes do tutorial, tratarei das Estruturas e laos de
controle, que so elementos muito importantes na criao de
rotinas em VBA.
Nessa stima parte do tutorial, falei sobre o conceito de Escopo de
Variveis. Voc aprendeu que existe o Escopo de Mdulo e o Escopo
de Procedimento. Tambm apresentei um exemplo prtico, para
ilustrar o conceito de Escopo de Variveis.

Вам также может понравиться