Interpretação do laço de Repetição "Do While True"


(Marcelo Adriano) #1

Olá Burno Hanai e aos demais participantes do fórum Fórmula Excel
Não se trata de uma dúvida e sim de um breve comentário: achei interessante a forma que você usou para identificar a primeira linha vazia, desconhecia essa forma "Do Whille True" .
Mas para ter um retorno: como podemos interpretar este procedimento Do While True .
No mais estou gostando da plataforma é bastante usual e intuitiva...

[a1].Select
Do While True
Selection.Offset(1, 0).Select
If Selection.Value = "" Then Exit Do
Loop
End Sub

Grato,
Marcelo Adriano


#2

Olá, Marcelo!

Existem várias formas de fazer o "loop", cada uma com sua característica.

O modo que eu costumo fazer é esse:

Do While Selection.Value <> ""
    Selection.Offset(1, 0).Select
Loop

Ou seja, "faça enquanto o valor atual for diferente de vazio".

Ele vai avaliar Selection.Value <> "", retornando ou VERDADEIRO ou FALSO.

Enquanto for VERDADEIRO, executa. Quando for FALSO, termina.

O outro modo que você citou também funciona, ele só tem uma pequena diferença:

Do While True
    Selection.Offset(1, 0).Select
    If Selection.Value = "" Then Exit Do
Loop

Aqui a ideia é "faça enquanto for VERDADEIRO", ou seja, a ideia é repetir eternamente... Mas no meio do código tem um If que, se o valor atual for igual a vazio, faz um Exit.

Ou seja, no primeiro exemplo a gente já determina quando deve terminar na primeira linha.

No segundo exemplo, ele determina quando deve terminar no meio do código.

Eu prefiro o primeiro exemplo porque já deixa claro logo no começo quando deve terminar, não preciso ler o código procurando pelo Exit.

Mas em algumas situações o segundo código é bom, principalmente quando se determina a primeira condição, mas no meio do código dá uma chance de ter alguma(s) exceção(ões)!

Espero ter ajudado.


(Marcelo Adriano) #3

Bruno Hanai
Obrigado estes conceitos teóricos nos ajuda a compreender melhor os códigos.
Grato,
Marcelo Adriano