Tutorial de Programação
VBA – Access – Parte 9
Objetivos:
Esta é a Parte 9 do Tutorial de Programação
VBA no Access. Neste tutorial falarei sobre as estruturas de repetição,
utilizadas na programação VBA. O objetivo desta série
de tutoriais é mostrar como utilizar a programação
VBA para solucionar problemas complexos no Access, problemas que
muitas vezes não tem como ser resolvidos sem o uso de programação.
Pré-requisitos: Para acompanhar esta lição
você deve dominar os conceitos apresentados no seguintes treinamento: "Curso
Básico de Access" e no tutorial "Consultas
Avançadas no Microsoft Access".
Nota: Este tutorial foi retirado da apostila da
Semana 2, do Curso de Access Avançado e VBA. Você pode
adquirir os três arquivos, com todo o conteúdo deste
curso, em um total de 550 páginas de conteúdo, com
exemplos detalhados, passo-a-passo, por apenas R$ 20,00 para envio
através de Download ou por R$ 30,00 para envio através
de CD. Para saber como adquirir este curso, Clique
Aqui.
Estruturas de repetição
Em determinadas situa ções, precisamos repetir um ou
mais comandos, um número específico de vezes, ou até
que uma determinada condição 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 alcançado. Para isso, utilizamos as chamadas
estruturas de repetição, ou Laços. A partir
de agora, estaremos analisando as estruturas de repetição
disponíveis.
A estrutura For...Next
Utilizamos o laço For...Next, para repetir um segmento de
código, um número determinado de vezes. Utilizamos
esta estrutura, quando já sabemos o número de vezes
que uma determinada seção de código deve ser
repetida. Neste tipo de estrutura, normalmente, utilizamos uma variável
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 início a variável contador tem o valor definido
para um determinado valor. Em cada passagem do laço, a variável
contador é incrementada pelo valor definido em incremento.
Caso não seja definido o incremento, será utilizado
o padrão 1.
Considere o exemplo a seguir:
Dim x
x=10
Soma=0 ‘ Faz a soma dos 10 primeiros números
maiores do que zero
For i=1 to x Soma = Soma
+i
Next
MsgBox “Valor da Soma = “ & Soma |
Neste exemplo, a variável i inicia com o valor 1. Em cada
passo, o valor de i é acrescentado à variável
Soma. Como o incremento não foi definido, será utilizado
o padrão que é 1. Com isso, ao final do laço
For...Next, a variável Soma, terá armazenado o valor
da soma dos 10 primeiros números inteiros.
Poderíamos utilizar um valor de incremento diferente de 1,
para, por exemplo, obter a soma somente dos números ímpares
menores do que 10:
Dim x
x=10
Soma=0
' Faz a soma dos 10 primeiros números í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 código,
enquanto uma determinada condição for
verdadeira, ou até que uma determinada condição
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 início
do laço, ou no final do laço. Com isso temos quatro
situações distintas, vamos analisar cada uma delas,
a partir de agora.
A estrutura Do While Condição...Loop
Neste caso, estamos utilizando o operador condicional While, no
início do laço. O formato geral, neste caso é
o seguinte:
Do While condição/teste
Comando1
Comando2
...
Comandon
Loop
Nesta estrutura, enquanto a condição for
verdadeira, o código dentro do laço é executado.
Quando a condição tornar-se falsa, o primeiro comando
após o final do laço, será executado. Neste
caso, se a condição for falsa já na primeira
vez, o laço não será executado nenhuma vez.
IMPORTANTE: O Código dentro do laço
deve ser capaz de alterar a condição para Falso, quando
for necessário, pois caso contrário a condição
será sempre verdadeira, e os comandos dentro do laço
ficarão em execução, infinitamente, ou até
o programa travar. A criação de laços infinitos,
devido a erros de programação, é 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 números maiores do que
zero
Do While Contador <= x Soma
= Soma + Contador Contador
= Contador + 1
Loop
MsgBox “Valor da Soma = “ & Soma |
Observe que dentro do laço, vamos Incrementando o valor da
variável Contador, uma unidade para cada passagem do laço.
Com isso, quando o valor de Contador, atingir 11, o teste do início
do laço torna-se falso, e o laço é encerrado.
A estrutura Do... Loop While Condição
Neste caso, deslocamos o teste de condição para o
final do laço. Com o teste no final do laço, o código
dentro do laço, será executado, pelo menos uma vez,
pois o teste somente é feito no final, e continuará
sendo executado, enquanto a condição for verdadeira.
O formato geral, neste caso é o seguinte:
Do
Comando1
Comando2
...
Comandon
Loop While condição/teste
Nesta estrutura, enquanto a condição for verdadeira,
o código dentro do laço é executado. Quando
a condição tornar-se falsa, o primeiro comando após
o final do laço, será executado. Neste caso, se a
condição for falsa já na primeira vez, o laço
será executado uma única vez.
IMPORTANTE: O Código dentro do laço
deve ser capaz de alterar a condição para Falso, quando
for necessário, pois caso contrário a condição
será sempre verdadeira, e os comandos dentro do laço
ficarão em execução, infinitamente, ou até
o programa travar. A criação de laços infinitos,
devido a erros de programação, é 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 números
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 laço será executado
uma única vez, pois a condição ‘
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 variável
Soma ?
Muito simples. A condição Contador < x é
falsa, pois x=10 e Contador=12 (Lembre que o Contador foi incrementado
de uma unidade dentro do laço, antes do teste ser realizado).
Neste caso, o laço será executado uma única
vez, pois o teste de condição está no final
do laço. Quando o laço é executado, é
atribuido o valor 11 para a variável Soma. Com isso, o valor
exibido para a variável Soma, será 11.
A estrutura Do Until Condição...Loop
Neste caso, estamos utilizando o operador condicional Until, no
início do laço. O formato geral, neste caso é
o seguinte:
Do Until condição
Comando1
Comando2
...
Comandon
Loop
Nesta estrutura, enquanto a condição for falsa,
o código dentro do laço é executado. Quando a condição tornar-se verdadeira, o primeiro
comando após o final do laço, será executado.
Neste caso, se a condição for verdadeira, já
na primeira vez, o laço não será executado
nenhuma vez.
IMPORTANTE: O Código dentro do laço
deve ser capaz de tornar a condição Verdadeira, quando
for necessário, pois caso contrário a condição
será sempre Falsa, e os comandos dentro do laço ficarão
em execução, infinitamente, ou até o programa
travar. A criação de laços infinitos, devido
a erros de programação, é 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 números
maiores do que zero
Do Until Contador > x
Soma
= Soma + Contador Contador
= Contador + 1
Loop
MsgBox “Valor da Soma = “ & Soma |
Observe que dentro do laço, vamos Incrementando o valor da
variável Contador, uma unidade para cada passagem do laço.
Com isso, quando o valor de Contador, atingir 11, o teste do início
do laço torna-se Verdadeiro, e o laço é encerrado.
A estrutura Do... Loop Until Condição
Neste caso, deslocamos o teste de condição para o
final do laço. Com o teste no final do laço, o código
dentro do laço, será executado, pelo menos uma vez,
pois o teste somente é feito no final, e continuará
sendo executado, enquanto a condição for Falsa. O
formato geral, neste caso é o seguinte:
Do
Comando1
Comando2
...
Comandon
Loop Until condição
Nesta estrutura, enquanto a condição for Falsa, o
código dentro do laço é executado. Quando a
condição tornar-se Verdadeira, o primeiro comando
após o final do laço, será executado. Neste
caso, se a condição for Verdadeira, já na primeira
vez, o laço será executado uma única vez.
IMPORTANTE: O Código dentro do laço
deve ser capaz de tornar a condição Verdadeira, quando
for necessário, pois caso contrário a condição
será sempre Falsa, e os comandos dentro do laço ficarão
em execução, infinitamente, ou até o programa
travar. A criação de laços infinitos, devido
a erros de programação, é 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 números
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 laço será executado
uma única vez, pois a condição ‘
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 variável
Soma ?
Muito simples. A condição 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 laço).
Neste caso, o laço será executado uma única
vez, pois o teste de condição está no final
do laço. Quando o laço é executado, é
atribuido o valor 11 para a variável Soma. Com isso, o valor
exibido para a variável Soma, será 11.
Conclusão:
Nesta parte do tutorial, falei sobre as estruturas de repetição
no código VBA. Você aprendeu sobre as estrutura For...Next,
Do...While e Do...Until e suas variações.
Nota: Este tutorial foi retirado da apostila da
Semana 2, do Curso de Excel Avançado e VBA. Você pode
adquirir os três arquivos, com todo o conteúdo deste
curso, em um total de 550 páginas de conteúdo, com
exemplos detalhados, passo-a-passo, por apenas R$ 20,00 para envio
através de Download ou por R$ 30,00 para envio através
de CD. Para saber como adquirir este curso,
Clique
Aqui.
|
|
|
Uma verdadeira especialização em Access, com 1935 páginas de conteúdo que vai do básico ao avançado, detalhadamente explicado e exemplificado. Desde os recursos básicos, passando pelos recursos avançados, pela criação de macros e pela automação de tarefas usando programação VBA.
Apenas: R$ 79,00 (valor do frete já incluído)
CLIQUE AQUI PARA SABER COMO COMPRAR ESTE CD |
|