Uso de Do... Instrucciones de bucle

Use Hacer... Instrucciones de bucle para ejecutar un bloque de instrucciones un número indefinido de veces. Las instrucciones se repiten ya sea mientras una condición es True o hasta que una condición pase a ser True.

Repetición de instrucciones mientras una condición es True

Hay dos maneras de usar la palabra claveWhile para comprobar una condición en una clase Do... Instrucción loop. Puede comprobar la condición antes de entrar en el bucle o puede comprobarla después de que el bucle se haya ejecutado al menos una vez.

En el procedimiento siguiente ChkFirstWhile , compruebe la condición antes de entrar en el bucle. Si myNum está establecido en 9 en lugar de 20, las instrucciones dentro del bucle nunca se ejecutarán. En el procedimiento ChkLastWhile, las instrucciones dentro del bucle se ejecutan una sola vez antes de que la condición pase a ser False.

Sub ChkFirstWhile() 
    counter = 0 
    myNum = 20 
    Do While myNum > 10 
        myNum = myNum - 1 
        counter = counter + 1 
    Loop 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub 
 
Sub ChkLastWhile() 
    counter = 0 
    myNum = 9 
    Do 
        myNum = myNum - 1 
        counter = counter + 1 
    Loop While myNum > 10 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub

Repetición de instrucciones hasta que una condición se convierta en True

Hay dos maneras de usar la palabra clave Until para comprobar una condición en una instrucción Do...Loop. Puede comprobar la condición antes de entrar en el bucle (como se muestra en el procedimiento ChkFirstUntil) o puede comprobarla después de que el bucle se haya ejecutado al menos una vez (como se muestra en el procedimiento ChkLastUntil). El bucle continúa mientras la condición permanece False.

Sub ChkFirstUntil() 
    counter = 0 
    myNum = 20 
    Do Until myNum = 10 
        myNum = myNum - 1 
        counter = counter + 1 
    Loop 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub 
 
Sub ChkLastUntil() 
    counter = 0 
    myNum = 1 
    Do 
        myNum = myNum + 1 
        counter = counter + 1 
    Loop Until myNum = 10 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub

Salir de un do... Instrucción Loop desde dentro del bucle

Puede salir de un do... Bucle mediante la instrucción Exit Do . Por ejemplo, para salir de un bucle sin fin, use la instrucción Exit Do en el bloque de instrucciones True de una clase If... Entonces... Instrucción Else o una instrucción Select Case . Si la condición es False, el bucle se ejecutará como de costumbre.

En el ejemplo myNum siguiente se asigna un valor que crea un bucle sin fin. La instrucción If...Then...Else comprueba esta condición y, a continuación, sale y evita el bucle sin fin.

Sub ExitExample() 
    counter = 0 
    myNum = 9 
    Do Until myNum = 10 
        myNum = myNum - 1 
        counter = counter + 1 
        If myNum < 10 Then Exit Do 
    Loop 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub

Nota:

[!NOTA] Para detener un bucle sin fin, presiones ESC o CTRL+INTERRUMPIR.

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.