Cómo emplear el Do Loop en Visual Basic

La estructura Do...Loop no es fácil de entender, pero es por ello que aquí se va a explicar de forma sencilla cómo emplear la estructura Do...Loop en Visual Basic. Antes de comenzar, saber que esta estructura Do...Loop lo podemos ver de dos formas Do Until...Loop y Do While...Loop



Estructura Do...Loop

Emplearemos la estructura Do ... Loop cuando queramos repetir una serie de acciones indefinidamente en bucle hasta que se cumpla una condición o hasta que deje de cumplirse.

Se escriben esos puntos suspensivos entre las palabras para dar a entender que entre las palabras Do y Loop se va a situar la condición y luego el código a ejecutar si la cumple.

En este ejemplo, necesitamos que Excel nos pregunte si cada miembro del equipo asistió a la reunión. En caso afirmativo debe marcar una X en la columna Asistente, y en caso negativo en la columna Ausente.

Do_Loop

Inicio y final del bucle

El bucle, como su nombre indica siempre se inicia con Do y se finaliza con Loop.

Condición

Justo después del Do debemos indicar qué tipo de condición va a seguir. Básicamente lo que estamos escribiendo es la misma condición de diferente forma, pero en ocasiones una puede ser más fácil que la otra.

La estructura Do ... Until (hasta) repetirá el bucle hasta que la condición sea verdadera.

En el ejemplo, vamos a recorrer las celdas de la columna, y le diremos que ejecute el bucle hasta que sea verdadero que la celda está en blanco.

Do Until IsEmpty(ActiveCell)
.
.

Loop


La estructura Do ... While (mientras) repetirá el bucle hasta que la condición sea falsa.

En el ejemplo, vamos a recorrer las celdas de la columna, y le diremos que ejecute el bucle hasta que sea falso que la celda está en blanco.

Do While ActiveCell <> ""
.
.

Loop

Macro completa

Recordando el ejemplo de más arriba, la macro va a recorrer indefinidamente la columna A, cela a celda hasta que la condición que le marcamos deje de cumplirse. En este caso, en el bucle hay una pregunta. Hará tantas preguntas como personas haya en la columna A.


Sub Do_Until()

Range("A2").Select

Do Until IsEmpty(ActiveCell)

tra = Selection
equipo = Selection.Address

asistencia = msgbox("¿Asistió a la reunión " & tra & " ?", vbQuestion + vbYesNo)

    If asistencia = 6 Then
           
        Range(equipo).Offset(0, 1) = "x"

    ElseIf asistencia = 7 Then
    
        Range(equipo).Offset(0, 2) = "x"
        
    End If
        
Selection.Offset(1, 0).Select

Loop

End Sub

Sub Do_While()

Range("A2").Select

Do While ActiveCell <> ""

tra = Selection
equipo = Selection.Address

asistencia = msgbox("¿Asistió a la reunión " & tra & " ?", vbQuestion + vbYesNo)

    If asistencia = 6 Then
           
        Range(equipo).Offset(0, 1) = "x"

    ElseIf asistencia = 7 Then
    
        Range(equipo).Offset(0, 2) = "x"
        
    End If
        
Selection.Offset(1, 0).Select

Loop

End Sub

Hay que fijarse en que la última orden antes del Loop es situar la selección en la siguiente celda que va a evaluar.

No hay comentarios:

Publicar un comentario

Otras entradas