Do While...
Loop
Instrucción que repite las instrucciones mientras una condición es
TRUE/VERDADERO.
Ejemplo
Excel tiene valores en las celdas B1:B100. Quieres buscar la primera celda que tenga un
valor más alto/igual que 1,50.
i=1
Do While Cells(i, 2) <> ""
If Cells(i, 1) >= 1.5 Then Exit Do
i=i+1
Loop
MsgBox "El valor se encontró en fila no. " & i
i = la línea donde empezamos el bucle. Ponemos i = 1. Cells(i, 2) significará línea i
(=1), columna 2. Es decir celda B1. Al final del bucle, i nos dará la línea que buscamos.
Do While Cells(i, 2) <> "" significa que queremos que un bucle siga hasta que no hayan
más celdas con valores en esta columna.
Aplicamos la condición a cada celda, para luego salir del bucle (Exit Do) si encuentra
un valor igual a ó más alto que 1,50 (VBA utiliza punto en vez de coma para
decimales). Al final sacamos un Messagebox para presentar el resultado.
Do until... Loop
Instrucción que repite las instrucciones hasta que una condición se convierta en
TRUE/VERDADERO.
Ejemplo
Una hoja Excel tiene datos (en este caso nombres) en las celdas A1:A5. Queremos que
el bucle pare en "Alexis".
A B
1 Alberto
2 Alejandro
3 Alex
4 Alexis
5 Allain
6
i=1
Do Until Cells(i, 1) = "Alexis"
i=i+1
Loop
MsgBox "El nombre Alexis se encontró en la línea " & i
i = la línea donde empezamos el bucle. Ponemos i = 1. Cells(i, 1) significará línea i
(=1), columna 1. Es decir celda A1. Al final del bucle, i nos dará la línea que buscamos.
Do Until Cells(i, 1) = "Alexis" significa que queremos que un bucle que siga hasta que
se encuentre el texto "Alexis". Al final presentamos una caja de diálogo para presentar
el resultado, cual en este caso sería 4.
For i... Next
Esta instrucción se repite el número de veces (i) que tú indicas.
Ejemplo
Hacemos un bucle sencillo. Queremos que se repita 4 veces, y que la variable intValor
(al empezar = 1) se incremente con 2 cada vuelta. Este nos da el resultado intValor = 9
(1+2+2+2+2).
Observa que el bucle tiene step 1. Esto significa que i se incrementa con 1 cada vuelta.
Esto es, que si queremos un bucle que vaya para atrás, pondríamos step -1.
intValor = 1
For i = 1 to 4 step 1
intValor = intValor + 2
Next i