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_expresiono también de la forma
[Nuestro código 1]
[Exit Do]
[Nuestro código 2]
Loop
DoDonde 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.
[Nuestro código 1]
[Exit Do]
[Nuestro código 2]
Loop While Mi_expresion
Recordemos que:
- Lo que esté en corchetes 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 RangeEJEMPLO 2
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
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:
EJEMPLO 3
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
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.
EJEMPLO 4
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
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
No hay comentarios:
Publicar un comentario