As instruções de Loop Do While e Do Until servem para que um bloco de instruções seja executado enquanto as condições referentes à cada instrução sejam alcançadas.
Numa tradução literal do inglês para o português as instruções podem ser entendidas da seguinte forma:
Do While = Faça enquanto
Do Until = Faça até
A sintaxe das duas instruções é a mesma, porém sua lógica é diferente
Do While "Teste condição"
Bloco de instruções
Loop
Do Until "Teste condição"
Bloco de instruções
Loop
Como pode-se reparar, a única diferença entre as duas instruções são as Palavras chave While e Until.
Agora vamos ver as respectivas lógicas das instruções.
O Loop While será executado sempre que o Teste de condição retornar um valor Verdadeiro
Dim aValor As Integer
aValor = 0
Do While aValor < 4 'enquanto for verdadeira
MsgBox a
aValor = aValor + 1
Loop
MsgBox "Fim"
No exemplo acima, a variável aValor começa com o valor 0 e a cada rodada do loop, seu valor é acrescido de 1.
O teste de condição verifica se aValor é menor do que 4, caso seja menor ( verdadeira ), o loop continua, caso contrário ele é finalizado.
Ao contrário do While o Loop Until será executado sempre que o Teste de condição retornar um valor Falso
Dim aValor As Integer
aValor = 0
Do Until aValor > 4 'enquanto for Falsa
MsgBox a
aValor = aValor + 1
Loop
MsgBox "Fim"
No exemplo acima, a variável aValor começa com o valor 0 e a cada rodada do loop, seu valor é acrescido de 1.
O teste de condição verifica se aValor é maior do que 4, caso seja maior ( falsa ), o loop se encerra, caso contrário ele continua. Outro detalhe nesse tipo de loop, é onde desejamos fazer a verificação da condição. Podemos colocar logo após o DO ou então após o LOOP.
Esse detalhe tem que ser usado com cautela, pois pode prejudicar de alguma forma os resultados do seu projeto.
Vejamos um exemplo da instrução While e passando de primeira um valor Falso para o teste de condição
Dim aValor As Integer
aValor = 0
Do While aValor > 4 'enquanto for verdadeira
MsgBox a
aValor = aValor + 1
Loop
MsgBox "Fim"
Nesse exemplo, o bloco de instruções não é executado, pois a condição já começa como Falsa ( a não é maior que 4 ) e o loop é encerrado
Porém se alterarmos o local do teste de condição e deixarmos após o Loop, o bloco de instruções será executado uma vez.
Dim aValor As Integer
aValor = 0
Do
MsgBox a
aValor = aValor + 1
Loop While aValor > 4 'enquanto for verdadeira
MsgBox "Fim"
Mostrando postagens com marcador access. Mostrar todas as postagens
Mostrando postagens com marcador access. Mostrar todas as postagens
sábado, 12 de setembro de 2015
segunda-feira, 8 de setembro de 2014
Loop For...Next
A instrução For...Next é usada quando precisamos executar algumas rotinas uma determinada quantidade de vezes em seqüência.
Com ela podemos usar uma variável de controle e passarmos valores a controles e objetos. Também podemos usá-la para chamar outras funções e procedimentos.
A sintaxe simples do Loop For...Next é a descrita abaixo.
Com ela podemos usar uma variável de controle e passarmos valores a controles e objetos. Também podemos usá-la para chamar outras funções e procedimentos.
A sintaxe simples do Loop For...Next é a descrita abaixo.
For i = 1 To 10
Aqui sera definido nosso bloco de instruções
Next
Aqui sera definido nosso bloco de instruções
Next
Definimos uma variável de controle e a nomeamos como “i”, mas pode ser outro nome qualquer. O valor Zero (0) é onde nosso contador irá iniciar e o valor Dez(10) até onde o Loop irá executar.
No nosso exemplo, a variável de controle “i” irá iniciar no Zero e irá executar a rotina por 10 vezes, lembrando que a cada execução, o valor da variável é acrescido de 1.
O valor que acrescentamos a cada execução do loop pode ser alterado através da instrução Step.
For i = 0 To 10 Step 2
Aqui sera definido nosso bloco de instruções
Next
Aqui sera definido nosso bloco de instruções
Next
No Exemplo, a rotina irá executar 6 vezes e a cada rodada do loop, a variável será acrescida de 2.
Os valores assumidos pela variável durante todas as rodadas são: 0, 2, 4, 6, 8 e 10.
Os valores assumidos pela variável durante todas as rodadas são: 0, 2, 4, 6, 8 e 10.
Importante ressaltar que a variável de controle só é visível dentro do For, caso seja necessário visualizá-la em outra parte do código, tem que ser declarada usando as instruções (DIM ou Public) e do tipo numérica (Integer, Double ou Long).
Pode ser que em alguma situação na Rotina For, seja necessário encerrar o LOOP como no exemplo abaixo.
Nessa situação, caso a data retornada pela instrução DateAdd seja maior que a Data atual do Sistema, o loop é encerrado usando a instrução Exit For
Dim a As Date
a = InputBox("informe a data")
a = InputBox("informe a data")
For i = 0 To 10
If DateAdd("d", i, a) > Date Then
Exit For
Else
MsgBox DateAdd("d", i, a)
End If
Next
If DateAdd("d", i, a) > Date Then
Exit For
Else
MsgBox DateAdd("d", i, a)
End If
Next
Vamos supor que no nosso projeto existam duas consultas uma de Atualização e outra de Acréscimo de dados.
Nas nossas rotinas, precisamos executar a consulta de Acréscimo e depois a de Atualização pra consolidar os Dados importados.
Nas nossas rotinas, precisamos executar a consulta de Acréscimo e depois a de Atualização pra consolidar os Dados importados.
Com a ajuda do For...Next podemos deixá-las em execução sempre uma após a outra.
Primeiro vamos definir uma variável do tipo Array de tamanho 2 e pra cada item dessa variável vamos passar o nome das duas consultas.
Dim stConsulta(2) as string
stConsulta(0)=”ConsultaAcrescimo”
stConsulta(1)=”ConsultaAtualizacao”
Dim stConsulta(2) as string
stConsulta(0)=”ConsultaAcrescimo”
stConsulta(1)=”ConsultaAtualizacao”
Agora criamos o Loop
For i=0 to 1
DoCmd.OpenQuery stConsulta(i), acViewNormal
Next
For i=0 to 1
DoCmd.OpenQuery stConsulta(i), acViewNormal
Next
Nesse caso, na primeira execução a variável de controle está com o valor Zero, dessa forma irá executar a consulta ConsultaAcrescimo que está definida no item Zero da Variavel Array stConsulta.
Quando o Loop executa pela segunda vez, a variável de controle assume o valor 1 e executa então a nossa segunda Consulta.
Condicionais Select Case e IF... Then... Else
As construções condicionais servem para testar certas condições e executar determinadas ações quando essas condições são atendidas.
Existem basicamente 2 construções que nos permite realizar esses testes, o Select Case e o If...Then...Else
A função das duas construções é a mesma, porém para certos casos uma de aplica melhor que a outra.
Nos exemplos abaixo, para os mesmos testes, vou lista as duas formas de escrever o código.
1) Realizar a verificação da Variável "a" do tipo String, nos procedimentos Select Case e If...then...else.
Dim a As String
a = InputBox("Informe um Valor")
Select Case a
Case "Pedro", "João", "Marcia", "Flavia"
MsgBox "Vc Escolheu alguem da familia"
Case Else
MsgBox "Não Pertence a familia"
End Select
If a = "Pedro" Or a = "João" Or a = "Marcia" Or a = "Flavia" Then
MsgBox "Vc Escolheu alguem da familia"
Else
MsgBox "Não Pertence a familia"
End If
2) Realizar o cálculo MOD para retornar o produto de uma divisão. Caso o produto da divisão de um número seja 1, então ele é um número ímpar, caso contrário um número par.
Dim a As Integer
a = InputBox("Informe um Valor")
Select Case a Mod 2
Case 0
MsgBox "Número Par"
Case Else
MsgBox "Número Ímpar"
End Select
If a Mod 2 = 0 Then
MsgBox "Número Par"
Else
MsgBox "Número Ímpar"
End If
3) Verificação simples para testar o valor da variável
Dim a As Integer
a = InputBox("Informe um Valor")
Select Case a
Case Is > 5
MsgBox "Número maior ou igual que 5"
Case Else
MsgBox "Número menor que 5"
End Select
If a > 5 Then
MsgBox "Número maior ou igual que 5"
Else
MsgBox "Número menor que 5"
End If
4) selecionar casos que estejam em um determinado intervaldo. Ex.: de 0 a 5, de 6 a 9
Dim a As Integer
a = InputBox("Informe um Valor de 0 a 10")
Select Case a
Case 0 To 5
MsgBox "Ruim"
Case 6 To 9
MsgBox "Bom"
Case 10
MsgBox "Excelente"
Case Else
MsgBox "Valor informado fora do intervalo"
End Select
If a >= 0 And a <= 5 Then
MsgBox "ruim"
ElseIf a >= 6 And a <= 9 Then
MsgBox "Bom"
ElseIf a = 10 Then
MsgBox "Excelente"
Else
MsgBox "Valor informado fora do intervalo"
End If
Existem basicamente 2 construções que nos permite realizar esses testes, o Select Case e o If...Then...Else
A função das duas construções é a mesma, porém para certos casos uma de aplica melhor que a outra.
Nos exemplos abaixo, para os mesmos testes, vou lista as duas formas de escrever o código.
1) Realizar a verificação da Variável "a" do tipo String, nos procedimentos Select Case e If...then...else.
Dim a As String
a = InputBox("Informe um Valor")
Select Case a
Case "Pedro", "João", "Marcia", "Flavia"
MsgBox "Vc Escolheu alguem da familia"
Case Else
MsgBox "Não Pertence a familia"
End Select
If a = "Pedro" Or a = "João" Or a = "Marcia" Or a = "Flavia" Then
MsgBox "Vc Escolheu alguem da familia"
Else
MsgBox "Não Pertence a familia"
End If
2) Realizar o cálculo MOD para retornar o produto de uma divisão. Caso o produto da divisão de um número seja 1, então ele é um número ímpar, caso contrário um número par.
Dim a As Integer
a = InputBox("Informe um Valor")
Select Case a Mod 2
Case 0
MsgBox "Número Par"
Case Else
MsgBox "Número Ímpar"
End Select
If a Mod 2 = 0 Then
MsgBox "Número Par"
Else
MsgBox "Número Ímpar"
End If
3) Verificação simples para testar o valor da variável
Dim a As Integer
a = InputBox("Informe um Valor")
Select Case a
Case Is > 5
MsgBox "Número maior ou igual que 5"
Case Else
MsgBox "Número menor que 5"
End Select
If a > 5 Then
MsgBox "Número maior ou igual que 5"
Else
MsgBox "Número menor que 5"
End If
4) selecionar casos que estejam em um determinado intervaldo. Ex.: de 0 a 5, de 6 a 9
Dim a As Integer
a = InputBox("Informe um Valor de 0 a 10")
Select Case a
Case 0 To 5
MsgBox "Ruim"
Case 6 To 9
MsgBox "Bom"
Case 10
MsgBox "Excelente"
Case Else
MsgBox "Valor informado fora do intervalo"
End Select
If a >= 0 And a <= 5 Then
MsgBox "ruim"
ElseIf a >= 6 And a <= 9 Then
MsgBox "Bom"
ElseIf a = 10 Then
MsgBox "Excelente"
Else
MsgBox "Valor informado fora do intervalo"
End If
quarta-feira, 27 de agosto de 2014
Tipos de Dados - Variáveis
Abaixo a tabela com os tipos de dados que podem ser usados com as variáveis no VBA.
Para trabalhar com esses dados e variáveis de forma adequada, é necessário atenção em alguns detalhe:
• ao declarar uma variável de um tipo e tentar armazenar um valor que foge as características do valor estabelecido, o VBA irá retornar um erro.
• se usar uma variável sem declarar o seu tipo, o VBA irá automaticamente tratá-la como do dipo Variant
• após declarar uma variável como Object, deve-se atribuir o objeto a essa variável usando o comando Set = variável = Objeto
quinta-feira, 21 de agosto de 2014
Tabela Verdade - AND, OR e NOT
Nas linhas de código, muitas vezes é necessário tomar uma decisão a partir de mais de uma condição e nesses casos usamos os operadores lógicos de conjunção ( AND ) ou o de desjunção inclusiva ( OR ).
Para negar uma condição, podemos usar o operador lógico de negação ( NOT ).
Abaixo as Tabelas Verdade para cada operador lógico.
• Operador AND
Usamos o operador AND quando todas as condições ( 2 ou mais ), tem que ser verdadeiras para que se retorne Verdadeiro
• Operador OR
Usamos o operador OR quando pelo uma das condições precisa ser Verdadeira para que se retorne Verdadeiro
• Operador NOT
O operador NOT inverte o resultado de uma condição obtida através dos operadores AND ou OR
Para negar uma condição, podemos usar o operador lógico de negação ( NOT ).
Abaixo as Tabelas Verdade para cada operador lógico.
• Operador AND
Usamos o operador AND quando todas as condições ( 2 ou mais ), tem que ser verdadeiras para que se retorne Verdadeiro
• Operador OR
Usamos o operador OR quando pelo uma das condições precisa ser Verdadeira para que se retorne Verdadeiro
• Operador NOT
O operador NOT inverte o resultado de uma condição obtida através dos operadores AND ou OR
quarta-feira, 20 de agosto de 2014
VBA - MsgBox
A função MsgBox() pode ter diversas possibilidades de combinações de botões de acordo com os valores ou constantes informadas no código.
A linha de código da função MsgBox() pode ser escrita de duas formas, porém possuem o mesmo efeito:
• MsgBox "Exemplo", 0, "Live Brain Tutoriais"
• MsgBox "Exemplo", vbOkOnly, "Live Brain Tutoriais"
Para ambos os casos, será exibida a seguinte Caixa de Mensagem:
Abaixo os ícones disponíveis
É possível combinar valores para exibir botões e avisos na MsgBox().
Exemplo 1: Botões Anular, Repetir e Anular e o ícone Exclamação
MsgBox "Exemplo", vbAbortRetryIgnore + vbExclamation, "Título"
Exemplo 2: Botões Sim e Não e o Ícone Interrogação
MsgBox "Exemplo", vbYesNo + vbQuestion, "Título"
Marcadores:
access,
caixa de mensagem,
código,
excel,
mensagem,
msgbox,
vba,
vbabortretryignore,
vbcritical,
vbexclamation,
vbinformation,
vbokcancel,
vbokonly,
vbquestion,
vbyesno,
vbyesnocancel
Alfabelo NumLock
A grande maioria conhece o comando Alt + 167, onde a combinação 167 é digitada no teclado NumLock e que resulta no caracter º ou a combinação Alt + 166 que se refere ao ª
Porém, o total de combinações possíves e que retornam um caracter válido é de 256
Então, para facilitar eu montei a lista abaixo com todos os caracteres disponívies.
Porém, o total de combinações possíves e que retornam um caracter válido é de 256
Então, para facilitar eu montei a lista abaixo com todos os caracteres disponívies.
Assinar:
Postagens (Atom)







