24.08.2020 Views

Programando o Excel ® Vba Para Leigos - 2ª Ed 2013 NoDRM (1)

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

158 Parte III: Conceitos de Programação

Sub DoUntilDemo()

Do Until IsEmpty(ActiveCell.Value)

ActiveCell.Value = ActiveCell.Value * 2

ActiveCell.Offset(1, 0).Select

Loop

End Sub

Exatamente como com o loop Do-While, você pode encontrar uma

forma diferente do loop Do-Until. O seguinte exemplo, o qual tem o

mesmo efeito que o procedimento anterior, demonstra uma sintaxe

alternativa para esse tipo de loop:

Sub DoLoopUntilDemo()

Do

ActiveCell.Value = ActiveCell.Value * 2

ActiveCell.Offset(1, 0).Select

Loop Until IsEmpty(ActivateCell.Value)

End Sub

CUIDADO!

Existe uma diferença sutil em como o loop Do-Until e o Do-Loop Until

operam. Na primeira, o teste é executado no início do loop, antes de

qualquer coisa no corpo do loop. Isso significa que é possível que o

código no corpo do loop não ser executado se a condição de teste for

atingida. Na última versão, a condição é testada ao final do loop.

Portanto, no mínimo, o loop Do-Loop sempre resulta no corpo do loop

ser executado uma vez.

Uma outra maneira de pensar a respeito disso é assim: o loop Do-While

mantém o loop desde que a condição seja True (verdadeira). O loop

Do-Until prossegue desde que a condição seja False (falsa).

Fazendo Loop através de uma Collection

O VBA suporta ainda outro tipo de loop – fazer loop em cada objeto em

uma coleção de objetos. Lembre-se que uma coleção consiste de uma

série de objetos do mesmo tipo. Por exemplo, o Excel tem uma coleção

de todas as pastas de trabalho abertas (a coleção Workbooks), e cada

pasta de trabalho tem uma coleção de planilhas (a coleção Worksheets).

Quando você precisa fazer loop através de cada objeto em uma coleção,

use a estrutura For Each-Next. A sintaxe é

For Each element In collection

[statements]

[Exit For]

[statements]

Next [element]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!