segunda-feira, 17 de outubro de 2011

9.3. Identificando números pares e ímpares

Voltei!!! Mais uma atualização!!!!!!


9.3. Identificando números pares e ímpares

Vamos criar um código para identificar os números pares e ímpares inseridos em uma INPUTBOX. Neste exemplo, vamos usar um operador matemático que não conhecemos ainda, o MOD, que tem a função de identificar o resto de uma divisão.

Para identificarmos os números pares, precisamos verificar se os mesmos, divididos por 2, apresentam resto igual a 0. Caso positivo, teremos um número par. Se o resto for 1, teremos um número ímpar.




CÓDIGO PARA COPIAR

Sub IdentificaParImpar93()

'Variável que receberá os números digitados na INPUTBOX.
Dim Numero As Integer
'Este fará a contagem do número de vezes que o FOR - NEXT irá ser excecutado
Dim Contador As Integer
'Esta variável, receberá a mensagem que será exibida no final do código.
Dim Mensagem As String

'Preenche a variável mensagem com o texto que será mostrado no final.
Mensagem = "NÚMEROS DIGITADOS: " & Chr(13) & Chr(13)
'Para o contador que rodará de 1 a 5 de um em um.
For Contador = 1 To 5 Step 1
'Permitiremos a digitação de um número por fez na INPUTBOX.
Numero = InputBox("Digite um número: ", "IDENTIFICA PAR/IMPAR")
'Verificamos se este número que foi digitado é par. Para isto, usamos MOD que é uma função
'do VBA
    'MOD tem a função de verificar se o resto da divisão de um número por 2 será 0 ou 1.
    'Caso 0, o número será par, do contrário será ímpar
    If (Numero Mod 2 = 0) Then
    'Caso seja par, pegaremos a mensagem que está na variável de mesmo nome e exibiremos no final
    'do código.
    Mensagem = Mensagem & Numero & "  Par" & Chr(13)
    'Do contráio, se for ímpar
    Else
    'Emitiremos uma mensagem semelhante a anterior, porém, para os números impares.
    Mensagem = Mensagem & Numero & "  Impar" & Chr(13)
    End If
'Fechamos o LOOP
Next
'Agora emitimos a mensagem no final do código, identificando os números pares e impares.
MsgBox Mensagem
End Sub


Clique em F5. O formulário será aberto. Digite os números 7, 9, 2, 5, 6 e clique em OK.




O resultado será este:



O operador MOD cumpriu o seu papel, todos os números foram identificados corretamente.


Para acessar o curso completo Clique aqui

domingo, 9 de outubro de 2011

9.2. Formatando células com FOR-EACH-NEXT

9.2. Formatando células com FOR-EACH-NEXT

No tópico 7.3, 1º EXEMPLO, aprendemos a usar a estrutura FOR-EACH-NEXT para exibir o nome das planilhas de uma pasta de trabalho. No 3º EXEMPLO, vimos como inserir valores e formatá-los em um intervalo de células. Vamos agora, criar um código capaz de identificar determinado número em uma planilha, formatando-o de acordo com nossas preferências. Vamos lá.

Na planilha de exemplos, crie a Plan6 e digite os números abaixo:




Criaremos um código que identifique todo o número 5 nesta planilha, aplicando a formatação desejada. Veja como vai funcionar.





CÓDIGO PARA COPIAR

Sub FormatandoForEachNext92()

'A variável que receberá a planilha
Dim Planilha As Worksheet
'Esta variável receberá um intervalo de células
Dim Celula As Range
'Associamos a variável planilha a Plan6
Set Planilha = Worksheets("Plan6")

'Criamos um bloco. Tudo que for digitado em WITH e END WITH, dirá respeito a Plan6
With Planilha
'Para cada Celula entre A1:F20
For Each Celula In Range("A1:F20")
    'Se o valor de uma destas céluas for 5, vamos aplicar as formatações abaixo.
    If Celula.Value = 5 Then
    'Criamos um bloco só para as células que vamos formatar
    With Celula
    'Mudaremos o tamanho da fonte
    .Font.Size = 22
    'Negritamos o valor
    .Font.Bold = True
    'Formatamos italic
    .Font.Italic = True
    'Definimos a cor azul
    .Font.Color = RGB(0, 0, 255)
    'O interior da celula será amarelo
    .Interior.ColorIndex = 6
    End With
   
    End If
   
Next

End With

End Sub


Veja o resultado:




Perceba que somente as células com o número 5 sofreram modificações, conforme o código elaborado.


Para acessar o curso completo Clique aqui

terça-feira, 4 de outubro de 2011

9. COMBINANDO LOOPS

Mais uma atualização do curso! Até a próxima!!!

9. COMBINANDO LOOPS

A mistureba vai começar! A partir deste momento, vamos construir algoritmos mesclando tudo o que aprendemos até agora.

Vamos fazer o máximo de exemplos possível para compreendermos melhor as aplicações em VBA e percebermos como a programação está presente em nossa vida cotidiana. Para começar, vamos tentar entender como os caixas eletrônicos que utilizamos todos os dias funcionam.

9.1. Lógica algorítmica do caixa eletrônico.

Com o passar dos anos, os bancos investiram maciçamente em TI para automatizar as suas ações. Por esta razão, bancário virou cabeça de bacalhau. Não vejo um desde essa informatização toda.

Como fomos expulsos das agências, precisamos aprender a interagir com os caixas eletrônicos. O problema é que o grande vazio existencial do homem consiste em operar parafernálias eletrônicas que não entende o funcionamento. Não sou psicólogo mais vou te ajuda nessa OK?

Vamos criar um pequeno formulário para facilitar a compreensão.

Abra o editor do VBA(Alt + F11) e siga o exemplo abaixo. Obs: você já deve ter percebido que estou usando sempre a mesma planilha, estando esta postada no blog para que você possa baixar e usá-la como ferramenta de estudo.




Veja que este formulário não se parece nada com a tela do programa de um caixa eletrônico. É óbvio, que o nosso objetivo é apenas compreender o raciocínio lógico que permeia um sistema desta natureza. Então let’s GO!!!





9.1.1. Programando o Botão Depositar



Nada de diferente do que já vimos até agora. Simplesmente salvamos o dado digitado na TextBox1 direto na Range(“A1”) da Plan4, usando uma InputBox.

O botão sacar é que exigirá mais de nós.

9.1.2. Programando o Botão Sacar

Uma das funções mais importantes do programador é se antever à possíveis erros praticados pelos usuários. Para tanto, precisam ser criadas consistências que minimizem estas possibilidades.

Como estamos simulando o raciocínio algorítmico de um caixa eletrônico, imagine a seguinte situação hipotética:

Você foi contratado pelo banco JJ para elaborar um sistema para um caixa eletrônico. O programa deverá registrar os depósitos dos clientes. Até aqui tudo bem.

O negócio ficará estreito, quando os clientes quiserem sacar seus depósitos. Por que? Imagine que uma pessoa que tem R$ 100,00 digite sem querer R$ 1000,00 e consiga sacar tal valor.

Minha pergunta: Cê tá no sal ou não ta?

Pois é meu caro amigo! Precisamos resolver este troço. Nosso sistema precisar ser inteligente a ponto de não permitir que tais situações ocorram. Então sigam meus bons!





CÓDIGO PARA COPIAR

Private Sub CB_Sacar_Click()
'Declare a variável que receberá a planilha
Dim Planilha As Worksheet
'A variável que receberá o valor do saque
Dim Sacar As Currency
'Associamos a variável Planilha com a Plan5
Set Planilha = Worksheets("Plan5")
'Criamos uma InputBox para receber o valor do saque.
Sacar = InputBox("Digite o valor que deseja sacar", "CAIXA ELETRÔNICO")
'Criamos um bloco para fazer referência à plan5. Tudo que for digitado entre WITH PLANILHA E END,
'dirá respeito a plan5
With Planilha
'Testamos. Enquanto o valor do saque for maior que o valor que o saldo em conta, emitiremos uma mensagem
'Informando qual é o saldo e solicitaremos novamente que um novo valor seja digitado. o Laço não será
'desfeito enquanto um valor menor ou igual ao saldo for digitado.
Do While Sacar > .Range("A1").Value
                                     'Para exibirmos o valor como moeda, usamos(FormatCurrency) para fazer
                                     'a conversão.
MsgBox "Seu saldo em conta é de: " & FormatCurrency(.Range("A1").Value)
'Precisamos pedir a digitação novamente, pois uma vez no LOOP, não será possivel voltar ao início do código
'para solicita a digitação da INPUTBOX que criamos lá em cima. Por isto repetimos ele aqui.
Sacar = InputBox("Digite o valor que deseja sacar", "CAIXA ELETRÔNICO")
'Fechamos o Loop
Loop
'Agora, famos fazer uma MSGBOX melhor elaborada. Ela fará parte do nosso testo, pois a ação da funcão condicional
'IF - END IF, dependerá da resposta que o usuário der. Perceba que o texto sempre fica entre aspas duplas.
'Variáveis são conectadas pelo &. Nesta caixa de mensagem, usamos o comando vbYesNo, que criará uma MSGBOX com as
'opções sim ou não. Podemos ainda, usar o vbQuestion para que uma interrogação apareça quando da execução.
'Finalmente, se o usuário clicar em NÃO, ENTÃO(THEN), vamos sair da rotina(Exit Sub), significando dizer, que o
'código vai simplesmente parar e nada será executado a partir dali.
If MsgBox("Deseja sacar " & FormatCurrency(Sacar) & " reais de sua conta corrente?", vbYesNo + vbQuestion, _
"CAIXA ELETRÔNICO") = vbNo Then
Exit Sub
'Do contrário, ou seja, se o usuário clicar SIM, continuaremos execução
Else
'E executaremos isto. Pegaremos o valor que está em A1 e subtrairemos o valor que está em SACAR.
'calculo simples.
'                     ao valor que já
'A1 será igual        já possue       menos SACAR
.Range("A1").Value = .Range("A1").Value - Sacar
End If
End With
End Sub


É hora dos testes. Click em F5 ou aperte Play como na figura abaixo





Click em Depositar, Caixa de Entrada (InputBox) será aberta. Digite 2000 e click em OK. Veja que o valor do depósito aparecerá na célula A1.





Agora, click no botão Sacar. Na InputBox digite 300 e click em OK. A MSGBOX vai fazer o seu papel. Se clicar em NÃO, sairemos da rotina e o código deixará de ser executado.


Se clicar em SIM, o saque será realizado e o saldo em conta será atualizado em A1 para R$ 1700,00.



Começamos bem. Creio que você entendeu como precisamos estar atentos à necessidade de elaboração de testes capazes de garantir o perfeito funcionamento do programa. Seguindo este raciocínio, vamos aprofundar o assunto nos próximos exemplos.


Para acessar o curso completo Clique aqui