Uso de bucles do while/do..loop/for...next excel vba

Para Dante

Hola Dante buen día necesito saber casos de uso de estos bucles y así idea más clara para emplearlo.

he notado que tu bucle favorito es el FOR...NEXT será por su facilidad de uso ?

1 Respuesta

Respuesta
3

Me gusta más usar el For Next, en la misma línea le indicas de dónde a dónde quieres el ciclo

For i = 1 to 10 (va desde 1 hasta 10, de uno en uno)

También le puedes indicar que avance de 3 en 3

For i = 1 to 10 step 3  (va desde 1 hasta 10, de tres en tres)

    For i = 1 To 10
        'sentencias
    Next


El ciclo Do While, se me hace más complejo, y ocupas más líneas:

    i = 1
    Do While True
        If i > 10 Then Exit Do
        i = i + 1
        'sentencias
    Loop

Tienes que ser cuidadoso cuando utilizar un Do While, porque puede entrar en un loop si  fin.

Otra forma es:

    i = 1
    Do While i < 11
        i = i + 1
        'sentencias
    Loop

Si los revisas en ambos casos tienes que indicar cuánto vale i, la condición y aumentar i en líneas diferentes, mientras que en el For, todo va en una línea.


El mismo ejemplo pero con el ciclo Do Loop

    i = 1
    Do
        i = i + 1
        'sentencias
    Loop While i < 11

Con While Wend

    i = 1
    While i < 11
        i = i + 1
        'sentencias
    Wend

Utilizo el For para realizar el ciclo de todas las filas desde una fila inicial hasta la última fila con datos:

for i = 2 to range("A" & rows.count).end(xlup).row

Pero hay casos en formatos establecidos que no necesariamente se tiene que recorrer hasta la última fila con datos, solamente se recorre un rango hasta encontrar un vacío, en ese caso utilizo el Do While:

En la imagen anterior si utilizo el For, estaría recorriendo las filas desde la 2 hasta 11.

Para eso empleo un Do while, para que recorra las filas de la 2 a la 4

    i = 2
    Do While Cells(i, "A") <> ""
        'sentencias
        i = i + 1
    Loop

Cuando el contador i llega a 5 la celda A5 es igual a vacío, entonces el ciclo termina.


Si conoces el inicio y el fin, puedes utilizar un For, pero si no conoces el fin porque depende de una condición, entonces utilizar el Do While, el ciclo se ejecutará hasta que se cumpla la condición.


Otro ejemplo para utilizar el Do Loop, es cuando quieres repetir la búsqueda de un dato en la hoja:

    celda = b.Address
    Do 
        ‘detalle
        Set b = r.FindNext(b)
    Loop While Not b Is Nothing And b.Address <> celda

El ciclo se repite hasta que ya no encuentra datos. Similar al caso anterior, no conozco el fin, entonces utilizo un ciclo hasta que se cumpla la condición.


sal u dos

¡Gracias Dante ! me quedó claro! 

solo una pregunta del FOR...NEXT al usar EXIT FOR según el ejemplo, la variable "n" mantiene el valor 4 ?

for i = 1 to 10 
n = n+1 
'
if n = 4 then
exit for
end if
'
next i

Realiza la prueba, pon un break en la línea exit for, para que veas cuánto vale n al momento de salir del for

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas