24.08.2020 Views

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capítulo 10: Controlando o Fluxo de Programa e Tomando Decisões

153

são declarações que se repetem no loop. Para ver isso funcionar,

continue lendo.

Um exemplo For-Next

O seguinte exemplo mostra um loop For-Next que não usa o valor

opcional Step ou a declaração opcional Exit. Essa rotina faz loops 20

vezes e usa a função Rnd para entrar com um número aleatório em 20

células, começando com a célula ativa:

Sub FillRange()

Dim Count As Long

For Count = 0 To 19

ActiveCell.Offset(Count, 0) = Rnd

Next Count

End Sub

CUIDADO!

Neste exemplo, Count (a variável que conta os loops) é iniciada com o

valor 0 e aumenta em 1 cada vez que passa pela loop. Pelo fato de que

eu não especifiquei um valor Step, VBA usa o valor (1) padrão. O

método Offset usa o valor de Count como um argumento. Na primeira

vez que passa pelo loop, Count é 0 e o procedimento entra com um

número offset (a diferença entre um valor atual e um valor desejado) na

célula ativa em zero linhas. Na segunda vez que passa (Count = 1), o

procedimento entrar com um número em offset na célula ativa em uma

linha, e assim por diante.

Porque o contador de loop é uma variável normal, você pode escrever

código para alterar o seu valor dentro do bloco de códigos entre as

declarações For e Next. No entanto, essa é uma prática muito ruim.

Alterar o contador dentro do loop pode levar a resultados imprevisíveis.

Tenha cuidado especial para garantir que o seu código não altere

diretamente o valor do contador de loop.

Um exemplo de For-Next com um Step

Você pode usar um valor Step para pular alguns valores em um loop

For-Next. Eis o mesmo procedimento da seção anterior, reescrito para

inserir números aleatórios em células intercaladas:

Sub FillRante2()

Dim Count As Long

For Count = 0 To 19 Step 2

ActiveCell.Offset(Count, 0) = Rnd

Next Count

End Sub

Dessa vez, Count começa como 0 e depois toma o valor 2, 4, 6 e assim por

diante. O valor final de Count é 18. O valor Step determina como o contador

é incrementado. Veja que o valor superior do loop (19) não é usado, pois o

valor mais alto de Count depois de 18 seria 20, e 20 é maior do que 19.

A Figura 10-2 mostra o resultado obtido ao executar FillRange2 quando

a célula B2 é a célula ativa.

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

Saved successfully!

Ooh no, something went wrong!