VBA™ para Excel™ 4: Do While


(Ver o anterior)

A partir do hoje veremos em detalhes as ferramentas e o “jeitão” da programação em VBA. Imagine, como um exemplo simples, que você precisa obter a média aritmética das quatro primeiras linhas da coluna A da planilha, e escrever este resultado na célula A5. Uma forma comum de fazer somas em VBA é ir “acumulando” os valores numa variável. Faremos isso hoje com a variável “Soma”. Lembre-se que os textos de explicação ficam precedidos de apóstrofe ( ‘ ), e ficam em verde. Veja uma forma simples (mas pouco inteligente) de se fazer:

Sub MediaColunaA()

Dim soma As Double
Dim media As Double
Dim valor As Double

soma = 0
‘fazemos isso para garantir que a variável começa zerada

valor = Cells(1, 1)
soma = soma + valor
valor = Cells(2, 1)
‘agora a variável “valor” foi substituída
soma = soma + valor
‘agora a variável soma recebeu um acréscimo, foi acumulada
valor = Cells(3, 1)
soma = soma + valor
valor = Cells(4, 1)
soma = soma + valor
media = soma / 4

Cells(5, 1) = media

End Sub

Faça o teste. Se tudo deu certo, a célula A5 vai apresentar o média. Se houve algum erro, você pode verificar a execução da Sub passo a passo com a tecla F8.

Mas esta não é a melhor forma de fazer isso. O VBA existe para trabalharmos com coisas complexas, como listagens grandes, como de 1.000 ou 10.000 entradas. Seria inviável continuarmos com esse raciocínio. Para resolver este tipo de problema existe o comando Do While (“faça enquanto…”).

O Do While testa uma condição. Se esta condição for verdadeira, ele lê a linha de baixo e continua até encontrar o comando Loop. Neste ponto ele volta para o Do While e testa a condição novamente. Fará isto até que a condição seja falsa, quando ele passará à linha abaixo do Loop. Veja a seguinte estrutura geral:

Do While <condição>
     Comando 1
     Comando 2
     Comando N
Loop
     Comando N+1

O programa inicia testando a condição. Se for verdadeira, executará os Comandos 1, 2 e N e volta ao teste de condição em Do While. Fará isto até que a condição seja falsa, quando executará o Comando N+1.

É possível colocar um comando Do While dentro de outro. Para não se perder, lembre-se de marcar visualmente isto, deslocando os internos para a direita:

Do While <condição>
     Comando 1
          Do While <condição 2>
               Comando Y
          Loop
     Comando 2
     Comando N
Loop
     Comando N+1

Vejamos uma solução elegante para o mesmo problema de cima, da média da coluna A:

Sub MediaColunaADoWhile()
Dim linha As Integer
Dim soma As Double
Dim valor As Double

soma = 0
valor = 0
linha = 1
‘este último é importante, porque não existe linha = 0

Do While linha <= 4
valor = Cells(linha, 1)
soma = soma + valor
linha = linha + 1
Loop

media = soma / (linha – 1)
Cells(linha, 1) = media

End Sub

Até a próxima!

Esse post foi publicado em administração, dicas, jobs, textos e marcado , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Guardar link permanente.

3 respostas para VBA™ para Excel™ 4: Do While

  1. Pingback: VBA™ para Excel™ 5: If Then Else | Ricardo Trevisan

  2. Pingback: VBA™ para Excel™ 3: interação com a planilha | Ricardo Trevisan

  3. Pingback: VBA™ para Excel™ 14: vetores e matrizes | Ricardo Trevisan

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s