Bucle Do While en VBA

En programación en general y el VBA en particular los bucles son métodos muy utilizados. Un ejemplo clásico de bucle es el For Next (puedes ver más información aquí). En este tutorial explicaremos cómo se usa el bucle Do While en VBA.

Sintaxis y funcionamiento

El funcionamiento del bucle Do While en VBA es muy sencillo, repetiremos una acción tantas veces que sea necesario siempre y cuando se evalúe una condición. Por ejemplo, iremos avanzando a lo largo de una columna por todas sus celdas e iremos sombreando en amarillo hasta que una celda sea mayor que un valor dado.

La sintaxis puede resultar un poco compleja inicialmente, pero una vez que veamos algunos ejemplos quedará perfectamente. La sintaxis se compone de la siguientes partes

Do While Mi_expresion
    
    [Nuestro código 1]
    
    [Exit Do]
    
    [Nuestro código 2]

Loop

o también de la forma

Do
    
    [Nuestro código 1]
    
    [Exit Do]
    
    [Nuestro código 2]

Loop While Mi_expresion

Donde en el primer caso evaluaremos inicialmente la expresión que queremos del tipo verdadero o falso y en el segundo caso lo evaluaremos después. Esto nos permitirá jugar un poco con el bucle.

Recordemos que:

  • Lo que esté en corches no es fundamental
  • Mi_expresión: es una condición lógica que devuelve verdadero o falso. Si se evalúa como verdadero el bucle continuará, sino, se terminará.
  • Exit Do: nos permitirá salir del bucle en cualquier momento dada una condición (por ejemplo si hemos repetido el bucle mil veces)
  • Nuestro código 1 o 2: este será el código que ejecutemos dentro del bucle. Puede ponerse antes, después o en ambas posiciones respecto del Exit Do.

Ejemplos del bucle Do While en VBA

A continuación vamos a ver una serie de ejemplos que queremos para que se pueda entender mejor cómo funciona el bucle Do While en VBA.

Ejemplo 1

En este ejemplo vamos a sombrear en amarillo las celdas del rango que sean uno hasta que dejen de serlo.

Dim mi_rango, c As Range

Set mi_rango = Range("a1:a10000")
Set c = mi_rango(1)

    Do While c.Value = 1
        c.Interior.Color = vbYellow
        Set c = c.Offset(1, 0)
    Loop

 Ejemplo 2

En el siguiente ejemplo vamos a sombrear en amarillo todas las celdas que sean menores que 100, pero si encontramos una celda menor que 50 saldremos del bucle:

Set c = Range("b1")

    Do While c.Value < 100
        If c.Value < 50 Then Exit Do    'salgo del bucle
        c.Interior.Color = vbYellow
        Set c = c.Offset(1, 0)
    Loop

 Ejemplo 3

En este tercer ejemplo vamos a poner a la derecha de la celda que se está evaluando un OK si evaluamos que su valor es menor que 100 y mayor que 50. Esto nos permitirá ver que en la condición lógica que vamos a evaluar podemos utilizar el and para hacer una doble evaluación.

Set c = Range("c1")

    Do
        c.Offset(0, 1) = "OK"
        Set c = c.Offset(1, 0)
    Loop While c.Value < 100 And c.Value > 50

 Ejemplo 4

En el siguiente ejemplo vamos a ver cómo se puede también utilizar un expresión anidada con Or para evaluar una condición.

Set c = Range("e1")

    Do While c.Value > 60 Or c.Value < 20
        c.Offset(0, 1) = "OK"
        Set c = c.Offset(1, 0)
    Loop

En el siguiente enlace podéis descargar un libro de Excel con los ejemplos que hemos visto del bucle Do While en VBA para Excel:

Ejemplos del bucle Do While en VBA

Quique es un fanático del Excel desde que empezó a trabajar con ello hace unos pocos años. Adquirió su conocimiento a través de Google y de infinitas pruebas y más pruebas. Además, Quique es un entusiasta de su familia (mujer e hijos), del deporte y de la cerveza… no dudes en contactar con él para cualquier duda que tengas.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies
Shares
Share This