Você está na página 1de 42

Tutorial de Programao VBA Access Parte 1

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.

Pr-requisitos: Para acompanhar esta lio voc deve dominar os conceitos apresentados no
seguintes treinamento: "Curso Bsico de Access" e no tutorial "Consultas Avanadas no
Microsoft Access".

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avanado e VBA.

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:
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.
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 clculas 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, Power
Point e Outlook.

importante entender que existe uma diferena fundamental entre o Visual Basic e o
VBA: Com o Visual Basic possvel criar os programas executrios, 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 executvies. 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:
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 Subprocedimento 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.
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 prapaganda das vantagens em se utilizar o VBA para
programao no Microsoft Access, hora de aprendermos os fundamentos bsicos desta
linguagem de porgramao. Bem, isso j fica para a Parte 2 deste tutorial, a qual dever estar
disponvel aqui no site, a partir do dia 10-Novembro-2003.

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 solucioados, usando o VBA. A partir
da prxima parte deste tutorial, voc comear a aprender os fundamentos da programao VBA
no Access.

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Excel Avanado e VBA.


Tutorial de Programao VBA Access Parte 2

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.

Pr-requisitos: Para acompanhar esta lio voc deve dominar os conceitos apresentados no
seguintes treinamento: "Curso Bsico de Access" e no tutorial "Consultas Avanadas no
Microsoft Access".

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avanado e VBA.


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:
Comandos bsicos do VBA: So aqueles comandos que esto presentes em toda e
qualquer lingagem 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 armazenarmas 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.
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

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

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.

Pr-requisitos: Para acompanhar esta lio voc deve dominar os conceitos apresentados no
seguintes treinamento: "Curso Bsico de Access" e no tutorial "Consultas Avanadas no
Microsoft Access".

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avanado e VBA.

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 Nwind.mdb, que est na pasta Semana2, a qual fornecida com os arquivos de
exemplos do Curso de Access Avanado e VBA.

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 northwind.mdb.
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 Object. 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, abordamos os aspectos bsicos do Ambiente de
Desenvolvimento. Nas demais partes deste tutorial, utilizaremos, 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

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.

Pr-requisitos: Para acompanhar esta lio voc deve dominar os conceitos apresentados no
seguintes treinamento: "Curso Bsico de Access" e no tutorial "Consultas Avanadas no
Microsoft Access".

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avanado e VBA.


Anatomia dos Mdulos do VBA

O cdigo VBA escrito em unidades chamadas subrotinas 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 Subna
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

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.

Pr-requisitos: Para acompanhar esta lio voc deve dominar os conceitos apresentados no
seguintes treinamento: "Curso Bsico de Access" e no tutorial "Consultas Avanadas no
Microsoft Access".

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avanado e VBA.


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 Subtipo
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.
Currency 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(Time)
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

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.

Pr-requisitos: Para acompanhar esta lio voc deve dominar os conceitos apresentados no
seguintes treinamento: "Curso Bsico de Access" e no tutorial "Consultas Avanadas no
Microsoft Access".

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 Smbolo 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:
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
a=25
b=3

som=a+b
subtr=a-b
divis=a/b
mult=a*b
intdivs=a\b
expo=a^b
modul= a mod b
'Uso de MsgBox para exibir os resultados.

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:
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

x=12
y=15
z=20
k=15

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

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

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

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 valor
numrico e outra possui um valor de
texto
O valor numrico ser sempre 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

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.

Pr-requisitos: Para acompanhar esta lio voc deve dominar os conceitos apresentados no
seguintes treinamento: "Curso Bsico de Access" e no tutorial "Consultas Avanadas no
Microsoft Access".

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avanado e VBA.


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 nwind.mdb que est na pasta Semana2.
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.
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.

Concluso:

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.

Tutorial de Programao VBA Access Parte 9

Objetivos:

Esta a Parte 9 do Tutorial de Programao VBA no Access. Neste tutorial falarei sobre as
estruturas de repetio, utilizadas na programao 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.

Pr-requisitos: Para acompanhar esta lio voc deve dominar os conceitos apresentados no
seguintes treinamento: "Curso Bsico de Access" e no tutorial "Consultas Avanadas no
Microsoft Access".

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avanado e VBA.

Estruturas de repetio
Em determinadas situaes, precisamos repetir um ou mais comandos, um nmero especfico de
vezes, ou at que uma determinada condio torne-se verdadeira ou falsa. Por exemplo, pode
ser que haja a necessidade de percorrer todos os registros de uma determinada tabela, at que
o ltimo registro seja alcanado. Para isso, utilizamos as chamadas estruturas de repetio, ou
Laos. A partir de agora, estaremos analisando as estruturas de repetio disponveis.

A estrutura For...Next

Utilizamos o lao For...Next, para repetir um segmento de cdigo, um nmero determinado de
vezes. Utilizamos esta estrutura, quando j sabemos o nmero de vezes que uma determinada
seo de cdigo deve ser repetida. Neste tipo de estrutura, normalmente, utilizamos uma
varivel como contador. Este contador varia de um valor inicial at um valor final. O Formato
geral desta estrutura o seguinte:
For contador=inicio to fim incremento
Comando1
Comando2
...
Comandon
Next
No incio a varivel contador tem o valor definido para um determinado valor. Em cada
passagem do lao, a varivel contador incrementada pelo valor definido em incremento. Caso
no seja definido o incremento, ser utilizado o padro 1.

Considere o exemplo a seguir:
Dim x
x=10
Soma=0

` Faz a soma dos 10 primeiros nmeros maiores do que zero

For i=1 to x
Soma = Soma +i
Next

MsgBox "Valor da Soma = " & Soma

Neste exemplo, a varivel i inicia com o valor 1. Em cada passo, o valor de i acrescentado
varivel Soma. Como o incremento no foi definido, ser utilizado o padro que 1. Com isso,
ao final do lao For...Next, a varivel Soma, ter armazenado o valor da soma dos 10 primeiros
nmeros inteiros.

Poderamos utilizar um valor de incremento diferente de 1, para, por exemplo, obter a soma
somente dos nmeros mpares menores do que 10:
Dim x
x=10
Soma=0

' Faz a soma dos 10 primeiros nmeros mpares

For i=1 to x Step 2
Soma = Soma +i
Next

MsgBox "Valor da Soma = " & Soma

Com este Script, obtemos o resultado indicado na Figura a seguir:



A estrutura Do...Loop

Esta estrutura pode ser utilizada para repetir um trecho de cdigo, enquanto uma
determinada condio for verdadeira, ou at que uma determinada condio torne-se
verdadeira. Podemos utilizar dois operadores condicionais diferentes: While ou Until. Os
operadores While ou Until, podem ser utilizados de duas maneiras diferentes: No incio do lao,
ou no final do lao. Com isso temos quatro situaes distintas, vamos analisar cada uma delas, a
partir de agora.

A estrutura Do While Condio...Loop

Neste caso, estamos utilizando o operador condicional While, no incio do lao. O formato geral,
neste caso o seguinte:
Do While condio/teste
Comando1
Comando2
...
Comandon
Loop
Nesta estrutura, enquanto a condio for verdadeira, o cdigo dentro do lao
executado. Quando a condio tornar-se falsa, o primeiro comando aps o final do lao, ser
executado. Neste caso, se a condio for falsa j na primeira vez, o lao no ser executado
nenhuma vez.

IMPORTANTE: O Cdigo dentro do lao deve ser capaz de alterar a condio para Falso,
quando for necessrio, pois caso contrrio a condio ser sempre verdadeira, e os comandos
dentro do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos
infinitos, devido a erros de programao, uma causa comum de erros e travamentos.

Considere o exemplo a seguir:
Dim x
x=10
Contador=1
Soma=0

' Faz a soma dos 10 primeiros nmeros maiores do que zero

Do While Contador <= x
Soma = Soma + Contador
Contador = Contador + 1
Loop

MsgBox "Valor da Soma = " & Soma

Observe que dentro do lao, vamos Incrementando o valor da varivel Contador, uma unidade
para cada passagem do lao. Com isso, quando o valor de Contador, atingir 11, o teste do incio
do lao torna-se falso, e o lao encerrado.

A estrutura Do... Loop While Condio

Neste caso, deslocamos o teste de condio para o final do lao. Com o teste no final do lao, o
cdigo dentro do lao, ser executado, pelo menos uma vez, pois o teste somente feito no
final, e continuar sendo executado, enquanto a condio for verdadeira. O formato geral, neste
caso o seguinte:
Do
Comando1
Comando2
...
Comandon
Loop While condio/teste
Nesta estrutura, enquanto a condio for verdadeira, o cdigo dentro do lao executado.
Quando a condio tornar-se falsa, o primeiro comando aps o final do lao, ser executado.
Neste caso, se a condio for falsa j na primeira vez, o lao ser executado uma nica vez.

IMPORTANTE: O Cdigo dentro do lao deve ser capaz de alterar a condio para Falso,
quando for necessrio, pois caso contrrio a condio ser sempre verdadeira, e os comandos
dentro do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos
infinitos, devido a erros de programao, uma causa comum de erros e travamentos.

Considere o exemplo a seguir:
Dim x
x=10
Contador=1
Soma=0

` Faz a soma dos 10 primeiros nmeros maiores do que zero

Do
Soma = Soma + Contador
Contador = Contador + 1Loop
While Contador <= x

MsgBox "Valor da Soma = " & Soma

Vamos modificar um pouco o nosso exemplo. Considere o exemplo mostrado a seguir:
Dim x
x=10
Contador=11
Soma=0

` O lao ser executado uma nica vez, pois a condio
` Contador < x falsa.

Do
Soma = Soma + Contador
Contador = Contador + 1
Loop While Contador <= x

MsgBox "Valor da Soma = " & Soma

Qual o valor ser exibido para a varivel Soma ?

Muito simples. A condio Contador < x falsa, pois x=10 e Contador=12 (Lembre que o
Contador foi incrementado de uma unidade dentro do lao, antes do teste ser realizado). Neste
caso, o lao ser executado uma nica vez, pois o teste de condio est no final do lao.
Quando o lao executado, atribuido o valor 11 para a varivel Soma. Com isso, o valor
exibido para a varivel Soma, ser 11.

A estrutura Do Until Condio...Loop

Neste caso, estamos utilizando o operador condicional Until, no incio do lao. O formato geral,
neste caso o seguinte:
Do Until condio
Comando1
Comando2
...
Comandon
Loop
Nesta estrutura, enquanto a condio for falsa, o cdigo dentro do lao executado.
Quando a condio tornar-se verdadeira, o primeiro comando aps o final do lao, ser
executado. Neste caso, se a condio for verdadeira, j na primeira vez, o lao no ser
executado nenhuma vez.

IMPORTANTE: O Cdigo dentro do lao deve ser capaz de tornar a condio Verdadeira,
quando for necessrio, pois caso contrrio a condio ser sempre Falsa, e os comandos dentro
do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos
infinitos, devido a erros de programao, uma causa comum de erros e travamentos.

Considere o exemplo a seguir:
Dim x
x=10
Contador=1
Soma=0

` Faz a soma dos 10 primeiros nmeros maiores do que zero

Do Until Contador > x
Soma = Soma + Contador
Contador = Contador + 1
Loop

MsgBox "Valor da Soma = " & Soma


Observe que dentro do lao, vamos Incrementando o valor da varivel Contador, uma unidade
para cada passagem do lao. Com isso, quando o valor de Contador, atingir 11, o teste do incio
do lao torna-se Verdadeiro, e o lao encerrado.

A estrutura Do... Loop Until Condio

Neste caso, deslocamos o teste de condio para o final do lao. Com o teste no final do lao, o
cdigo dentro do lao, ser executado, pelo menos uma vez, pois o teste somente feito no
final, e continuar sendo executado, enquanto a condio for Falsa. O formato geral, neste caso
o seguinte:
Do
Comando1
Comando2
...
Comandon
Loop Until condio
Nesta estrutura, enquanto a condio for Falsa, o cdigo dentro do lao executado. Quando a
condio tornar-se Verdadeira, o primeiro comando aps o final do lao, ser executado. Neste
caso, se a condio for Verdadeira, j na primeira vez, o lao ser executado uma nica vez.

IMPORTANTE: O Cdigo dentro do lao deve ser capaz de tornar a condio Verdadeira,
quando for necessrio, pois caso contrrio a condio ser sempre Falsa, e os comandos dentro
do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos
infinitos, devido a erros de programao, uma causa comum de erros e travamentos.

Considere o exemplo a seguir:
Dim x
x=10
Contador=1
Soma=0

` Faz a soma dos 10 primeiros nmeros maiores do que zero

Do
Soma = Soma + Contador
Contador = Contador + 1
Loop Until Contador > x

MsgBox "Valor da Soma = " & Soma

Vamos modificar um pouco o nosso exemplo. Considere o exemplo a seguir:
Dim x
x=10
Contador=11
Soma=0

` O lao ser executado uma nica vez, pois a condio
` Contador >= x verdadeira.

Do
Soma = Soma + Contador
Contador = Contador + 1
Loop Until Contador >= x

MsgBox "Valor da Soma = " & Soma

Qual o valor ser exibido para a varivel Soma ?

Muito simples. A condio Contador>= x falsa, pois x=10 e Contador=12 (Lembre que o
Contador foi incrementado de uma unidade, na linha 11, na primeira passagem do lao). Neste
caso, o lao ser executado uma nica vez, pois o teste de condio est no final do lao.
Quando o lao executado, atribuido o valor 11 para a varivel Soma. Com isso, o valor
exibido para a varivel Soma, ser 11.

Concluso:

Nesta parte do tutorial, falei sobre as estruturas de repetio no cdigo VBA. Voc aprendeu
sobre as estrutura For...Next, Do...While e Do...Until e suas variaes.


Tutorial de Programao VBA Access Parte 11

Objetivos:

Esta a Parte 11 do Tutorial de Programao VBA no Access. Neste tutorial falarei sobre as
funes para converso de tipo de dados, utilizadas na programao 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.

Pr-requisitos: Para acompanhar esta lio voc deve dominar os conceitos apresentados no
seguintes treinamento: "Curso Bsico de Access" e no tutorial "Consultas Avanadas no
Microsoft Access".

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avanado e VBA.

Funes para converso de tipos

Neste item aprenderemos a utilizar as principais funes para converso de tipos. Existem
situaes em que um determinado tipo de dado, deve ser convertido para outro. Por exemplo,
se tivermos um nmero, armazenado na forma de texto, precisamos convert-lo para inteiro ou
double, para que possamos realizar clculos. Em uma das prximas partes deste tutoria,
faremos um exemplo de clculo do DV do CPF, onde o CPF um valor do tipo texto. Ao
extrairmos cada dgito do CPF, estes sero extrados como caracteres de texto. Precisaremos
utilizar uma funo de converso, para convert-los para nmeros, a fim de que possamos
efetuar os clculos necessrios.

Na seqncia, apresento as principais funes de converso, bem como um pequeno fragmento
de cdigo, exemplificando a utilizao de cada uma delas.

Funo Cbool

A funo Cbool converte uma varivel ou resultado de um expresso, para o subtipo Boolean.
Qualquer nmero, com exceo do zero, automaticamente convertido para Verdadeiro. O valor
zero sempre convertido para Falso. O argumento desta funo, no pode ser Texto, caso
contrrio ser gerado um erro em tempo de execuo.

Observe este linha de cdigo:
MsgBox cbool(10>25) & chr(13) & cbool(3)

Esta linha gera a mensagem indicada na Figura a seguir:



A expresso 10>25 avaliada, como a expresso falsa, a funo Cbool retorna Falso. J no
segundo uso da funo Cbool, foi passado o parmetro 3 para a funo. Qualquer valor diferente
de zero (com exceo de texto), a funo interpreta como Verdadeiro, o que comprovado pela
Figura anterior.

Funo CByte

A funo CByte converte uma varivel ou resultado de um expresso, para o subtipo Byte. O
valor a ser convertido, deve estar na faixa aceitvel para o tipo byte, que vai de 0 255. Caso o
nmero esteja fora desta faixa, ser gerada uma mensagem de erro, em tempo de execuo. O
argumento desta funo, no pode ser Texto, caso contrrio ser gerada uma mensagem de
erro, em tempo de execuo.

Observe este linha de cdigo:
MsgBox CByte(10+34) & chr(13) & CByte(35)

Esta linha gera a mensagem indicada na Figura a seguir:



A expresso 10+34 calculada, e o resultado (44), convertido para o tipo byte. A linha de
cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo, pois o valor a ser
convertido para byte, est fora da faixa de 0 255.
MsgBox CByte(100+200)
Funo CCur

A funo CCur converte uma varivel ou resultado de um expresso, para o subtipo Currency. O
argumento desta funo, no pode ser Texto, caso contrrio ser gerado um erro.

Observe este linha de cdigo:
MsgBox CCur(250.335677+324.3333) & chr(13) & CCur(1250.326582)

Esta linha gera a mensagem indicada na Figura a seguir:



A expresso 250.335677+324.3333 calculada, e o resultado convertido para o tipo Currency.

Se passarmos um argumento de texto para a funo CCur, ser gerado um erro de execuo,
conforme indicado na Figura a seguir:



Funo Cdate

A funo CDate converte uma varivel ou resultado de um expresso, para o subtipo Date. O
argumento desta funo deve estar em um formato que seja aceitvel para datas, caso contrrio
ser gerada uma mensagem de erro, em tempo de execuo.

Observe este linha de cdigo:
MsgBox CDate("31/10/1980") & chr(13) & CDate("23-01-2007")

Esta linha gera a mensagem indicada na Figura a seguir:



A linha de cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo, conforme
indicado na prxima figura:
MsgBox CDate("31/02/1980")



Funo CDbl

A funo CDbl converte uma varivel ou resultado de um expresso, para o subtipo Double. O
argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem
de erro, em tempo de execuo.

Observe este linha de cdigo:
MsgBox CDbl("4.940651247E-17")

Esta linha gera a mensagem indicada na Figura a seguir:



Funo CInt

A funo CInt converte uma varivel ou resultado de um expresso, para o subtipo Integer. O
argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem
de erro, em tempo de execuo.

Observe este linha de cdigo:
MsgBox CInt(32.36) & Chr(13) & CInt(20.35+40.45)

Esta linha gera a mensagem indicada na Figura a seguir:



Funo CLng

A funo CLng converte uma varivel ou resultado de um expresso, para o subtipo Long. O
argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem
de erro, em tempo de execuo. O argumento tambm no pode estar fora da faixa admitida
pelo subtipo Long, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo.

Observe este linha de cdigo:
MsgBox CLng("3462315")

Esta linha gera a mensagem indicada na Figura a seguir:



Funo CSng

A funo CSng converte uma varivel ou resultado de um expresso, para o subtipo Single. O
argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem
de erro, em tempo de execuo. O argumento tambm no pode estar fora da faixa admitida
pelo subtipo Single, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo.

Observe este linha de cdigo:
MsgBox CSng("3.1418256927")

Esta linha gera a mensagem indicada na Figura a seguir:



Funo CStr

A funo CStr converte uma varivel ou resultado de um expresso, para o subtipo String.

Observe este linha de cdigo:
MsgBox CStr("12345" & " hectares de terra")

Esta linha gera a mensagem indicada na Figura a seguir:



Funes Int e Fix

As funes Int e Fix, retornam somente a parte inteira de um determinado nmero. A diferena
entre as duas funes, quando o nmero for negativo. Observe os exemplos abaixo:
Fix(-10.2) -> Retorna -10

Int(-10.2) -> Retorna -11
A funo Int, retorna, no caso de nmeros negativos, o primeiro nmero inteiro, menor ou igual
ao parmetro passado. No caso de -10.2, retornou -11. J Fix, retorna, no caso de nmeros
negativos, o primeiro inteiro, maior ou igual ao parmetro passado. No caso de -10.2, retornou -
10.

Observe esta linha de cdigo:
MsgBox Fix (-7.35) & Chr(13) & MsgBox Int(-7.35)
Esta linha gera a mensagem indicada na Figura a Seguir:



Com isso, terminamos a nossa apresentao sobre as principais funes para a converso de
tipos de dados. No prxima parte deste tutorial, apresentarei mais algumas funes do VBA,
para operaes com dados do tipo String e do tipo Data/Hora.

Concluso:

Nesta parte do tutorial, falei sobre as funes para converso de tipo de dados. Estas funes
so muito utilizadas em rotinas de validao de dados, para garantir que os dados digitados em
um campo, sejam do tipo correto.

Tutorial de Programao VBA Access Parte 12

Objetivos:

Esta a Parte 12 do Tutorial de Programao VBA no Access. Neste tutorial falarei sobre as
funes do VBA, para o trabalho com campos e valores do tipo Texto (String). 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.

Pr-requisitos: Para acompanhar esta lio voc deve dominar os conceitos apresentados no
seguintes treinamento: "Curso Bsico de Access" e no tutorial "Consultas Avanadas no
Microsoft Access".

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avanado e VBA.

Funes para tratamento de String
Neste parte do tutorial veremos as principais funes para tratamento de String, as quais
descrevo a seguir
Funo Asc:
A funo Asc, retorna o valor numrico do cdigo ASCII, para a primeira letra de uma String.
Considere o exemplo:
Asc("Ainda chovia)
Este exemplo de uso da funo retorna o valor 65, o qual o cdigo ASCII, para a letra A
maiscula. Caso fosse a letra "a" minscula, o cdigo retornado seria 97 e assim por diante.
Funo Chr:
A funo Chr(nmero), recebe um nmero como parmetro, e retorna o caractere ASCII,
associado ao nmero passado como parmetro.
Considere o exemplo:
Chr(65)
Este exemplo de uso da funo retorna o caractere "A" maisculo.
NOTA: At agora, utilizamos a funo Chr em diversos exemplos. Utilizamos o Chr(13), para
simular um ENTER, o que faz uma quebra de linha, nas mensagens montadas com o MsgBox.
Funo Len:
Esta funo determina o tamanho da String que foi passada como parmetro para a funo.
Considere o exemplo:
MsgBox Len("Este um exemplo de uso da funo Len !!)
Este exemplo de uso da funo, retorna 41, conforme indicado na Figura a seguir:

Funo LCase:
Esta funo converte para minsculas, a String que foi passada como parmetro para a funo.
Considere o exemplo:
MsgBox Lcase("ESTE UM EXEMPLO DE USO DA FUNO LCASE!!)
Este exemplo de uso da funo, converte o parmetro passado, para letras minsculas,
conforme indicado na Figura a seguir:

Funo UCase:
Esta funo converte para MAISCULAS, a String que foi passada como parmetro para a
funo. Considere o exemplo:
MsgBox Lcase("este um exemplo do uso da funo ucase !!)
Este exemplo de uso da funo, converte o parmetro passado, para letras maisculas,
conforme indicado na Figura a seguir:

Funo Left:
Esta funo retorna um nmero especificado de caracteres, a partir do incio (Left - Esquerda)
de uma String. importante salientar que espaos em branco tambm devem ser considerados.
O formato geral da funo o seguinte:
Left(String, n)
onde n o nmero de caracteres a retornar.
Considere o exemplo:
MsgBox Left("Jlio Cesar Fabris Battisti,5)
Este exemplo de uso da funo, retorna as cinco primeiras letras da String passada, neste caso,
retornar Jlio
Vamos alterar um pouco o nosso exemplo:
MsgBox Left("Jlio Cesar Fabris Battisti,7)
Ir retornar: Jlio C
Observe que o espao em branco tambm considerado.
Funo Right:
Esta funo retorna um nmero especificado de caracteres, a partir do final (Right - Direita) de
uma String. importante salientar que espaos em branco tambm devem ser considerados.
O formato geral da funo o seguinte:
Right(String, n)
onde n o nmero de caracteres a retornar.
Considere o exemplo:
MsgBox Right("Jlio Cesar Fabris Battisti,6)
Este exemplo de uso da funo, retorna as seis ultimas letras da String passada, neste caso,
retornar "ttisti.
Vamos alterar um pouco o nosso exemplo:
MsgBox Right("Jlio Cesar Fabris Battisti,10)
Ir retornar: s Battisti
Observe que o espao em branco tambm considerado.
Funo Mid:
Esta funo retorna um nmero especificado de caracteres, a partir de uma posio
especificada, dentro da String. importante salientar que espaos em branco tambm devem
ser considerados.
O formato geral da funo o seguinte:
Mid(String, posicao_inicio, n)
onde:
posicao_inicio: a posio a partir da qual devem ser retornados caracteres
n: o nmero de caracteres a retornar.
Considere alguns exemplos:
Mid("Jlio Cesar Fabris Battisti,7,5)
Este exemplo de uso da funo, retorna, a partir da posio 7, 5 caracteres, neste caso,
retornar Cesar
Mid("SANTA MARIA,3,7)
, ir retornar NTA MAR. Observe que o espao em branco tambm considerado.
Um detalhe interessante, que podemos utilizar o valor retornado por uma funo, como
parmetro para outra funo. Considere o seguinte exemplo:
LCase(Mid("SANTA MARIA,3,7))
Este exemplo retorna nta mar.
A funo Mid retira os caracteres NTA MAR, os quais so passados como parmetros para a
funo LCase, a qual converte os caracteres para minsculos.
Funo String:
Esta funo retorna um determinado caractere, um nmero especificado de vezes.
O formato geral da funo o seguinte:
String(n, Caractere)
onde n o nmero de vezes que Caractere deve ser repetido.
Considere o exemplo:
MsgBox String(35,*)
A Figura a seguir mostra o resultado deste comando:

Concluso:

Nesta parte do tutorial, falei sobre as funes para o trabalho com campos e valores do tipo
Texto. Estas funes so muito utilizadas em rotinas de tratamento de valores de texto, como
por exemplo quando estamos acessando dados externos, em outros formatos de banco de
dados.

Você também pode gostar