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.
For i = 1 To 10
      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
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.
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")
For i = 0 To 10
    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.
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”
 Agora criamos o Loop
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

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







quarta-feira, 20 de agosto de 2014

Limpar Temporário Outlook

Quem recebe diariamente arquivos anexos no Outlook pode encontrar a situação descrita abaixo:
Por exemplo, todos os dias você recebe a planilha Levantamento.xlsx. Você a abre e trabalha com ela fazendo as devidas análises e alterações.
Dia após dia esse processo se repete. Mas chega um dia em que, do nada, não consegue mais abrir essa planilha. Você então entra em contato com quem lhe encaminha esse levantamento pra ver se houve alterações na planilha ou no seu modo de envio. Mas o processo continua o mesmo.
Então por que não consegue abrir o arquivo?
A resposta é que, cada vez que você recebe e abre esse arquivo, o Outlook salva um arquivo temporário e cada vez que salva, ele coloca uma numeração incremental automática. Ex. Levantamento(1).xlsx, Levantamento(2).xlsx, Levantamento(3).xlsx e assim por diante.  
Porém, o limite para esses arquivos é até o 99  Levantamento(99).xlsx. Quando ele atinge esse número, o Outlook não consegue mais salvar o arquivo temporário e dessa forma não abre o arquivo anexo ao email.
Para resolver esse problema, basta ir até a pasta C:\Documents and Settings\UsuárioLogado\Configurações locais\Temporary Internet Files\Content.Outlook e apagar todos os arquivos e pastas existentes.
Pode apagar sem medo, pois são somente arquivos temporários.
Lembrando que onde está UsuárioLogado você tem que substituir pelo nome do usuário que efetuou o Login na Máquina.
Uma maneira de fazer isso rápido e também poder deixar disponível a todos os colaboradores de sua empresa é criar um arquivo de texto com extensão VBE conforme passo a passo abaixo.
 
          1)       Clicar na tecla Windows + R
          2)       Na caixa executar, digitar Notepad
          3)       Colar o Código abaixo
on error resume next
Set WshShell = Wscript.CreateObject("Wscript.Shell")
set fso = CreateObject("Scripting.FileSystemObject")
aUser=inputbox("Informe o nome do usuário Logado")
if len(aUser)<>7 then
      msgbox aUser & " - Usuário incorreto!"
else
set Folder=  fso.GetFolder("C:\Documents and Settings\" & aUser & "\Configurações locais\Temporary Internet Files\Content.Outlook")
' delete all subfolders and files
For Each f In folder.SubFolders
   On Error Resume Next
   name = f.name
   f.Delete True
      if err then
            msgbox a & " - Verificar o usuário informado!"
      end if
      On Error GoTo 0
Next
      msgbox ("Pasta limpa com sucesso!!!")
end if
          4)        Clicar em Salvar Como
          5)       Em Nome do arquivo: informar um nome com extensão ( Ex. LimpaOutlook.vbe )
          6)       Em Salvar como tipo: selecionar Todos os Arquivo
          7)       Em Codificação: Deixar como ANSI
  
O      
          Arquivo será salvo conforme abaixo:

Esse é um tipo de arquivo executável. Ao clicar 2 vezes, informar o Nome do usuário logado.

Se o usuário for informado corretamente, será exibida a mensagem abaixo


Caso Contrário  
 

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 a lista completa das combinanações de botões disponíveis nas Caixas de Mensagens e seus respectíveis valores e constantes:


 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"

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.


segunda-feira, 18 de agosto de 2014

Atalhos Excel

              Quando você tem que formatar uma célula para o tipo de número como Moeda ou se tem que incluir um Gráfico qual a forma que faz isso?
             Talvez sua resposta seja, para formatar como moeda, vou com o mouse até a faixa de opções Inicio e no Grupo de opções Número e Clico em Moeda e para Inserir um Gráfico vou com o mouse até a faixa Inserir e clico em Gráfico.
             Percebe que em ambas as situações você teve que tirar uma de suas mãos do teclado e ir até o mouse e localizar a opção desejada?
           Quando trabalhamos com planilhas diariamente, esse simples movimento de tirar a mão do teclado e ir até o mouse se torna cansativo e é extremamente desconfortável. Porém no Excel  existem inúmeros atalhos no Teclado que visam diminuir esse desconforto e nos proporciona um ganho em rendimento.
          Vou listar abaixo 10 desses atalhos que eu considero importante e são os que eu uso com freqüência. Quando você se habituar a usá-los, poderá perceber como o uso do mouse é realmente dispensável pra esses casos.
          Então vamos lá!!!
                       1)  Completar Fórmulas Usando TAB
               Quando iniciamos uma fórmula, o Excel vai filtrando as fórmulas de acordo com o que vamos digitando. Porém quando já sabemos qual fórmula iremos usar, podemos selecioná-la com as setas do teclado (Fig. 1) e depois pressionamos a tecla TAB para que o Excel preencha o restante inclusive abrindo o Parêntese (Fig. 2)

                       2)  Abrir Caixa Formatar Células
               Para formatação das células (Cor, borda, tipo numérico, alinhamento e etc) usamos a caixa Formatar Células.
               Ela pode ser acessada de diversas formas com o mouse ou através da combinação de Teclas Ctrl + 1
   

                     3)  Formatar Valores numéricos
             Para formatar de forma rápida alguns tipos numérico, usamos algumas combinações de teclas como demonstrado na figura abaixo

                       4)   Inserir contorno em um intervalo
               Para inserir um contorno simples em uma célula ou em um intervalo de células, usamos a combinação de teclas Ctrl + Shift + 7

                       5)  Atualizar planilha
               Reparem na imagem abaixo que estou efetuando um cálculo Simples Somando as Células E1 e E2, porém o resultado não está atualizado. Isso ocorre porque a opção de cálculo do Excel está como Manual.
Para que todos os cálculos sejam atualizados, usamos a Tecla F9 ou podemos deixar como Automático que é o padrão do Excel.
               Essa Tecla também é útil quando usamos as fórmulas ( Aleatório ou a AleatórioEntre )

                       6)  Ir para a primeira célula de um intervalo
               Se após selecionarmos um intervalo grande de células e aplicarmos uma formatação de cor, desejarmos retornar à primeira célula desse intervalo, o modo mais rápido de fazer isso é usarmos as teclas Ctrl + Shift + 8. Desse modo a primeira célula por onde iniciamos a nossa seleção será selecionada.

                       7)  Verificação Ortográfica
               Para efetuar a verificação ortográfica de forma bem mais rápida, usamos a tecla F7
                       8)   Abrir, Salvar, Novo e Salvar como
                       9)  Inserir Grafico
               Uma maneira rápida de inserir um gráfico é usarmos as teclas ALT + F1
               Detalhe: Se não tiver nenhum um intervalo selecionado, será inserido um Gráfico em branco.
                       10)  Abrir Caixa de Macros
               Para abrir a caixa de macros usamos ALT + F8. Dessa forma nos é listado todas as macros disponíveis para a pasta de trabalho atual.