6.3 El bucle For Next

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 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 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

No hay comentarios:

Publicar un comentario