4. Bucles: For Next y Do While
En esta lección aprenderás a:
- Repetir código un número exacto de veces con
For i = 1 To N … Next i. - Repetir mientras se cumpla una condición con
Do While … Loop. - Recorrer cada celda de un rango con
For Each … In … Next. - Salir anticipadamente de un bucle con
Exit For.
For Next — número fijo de repeticiones
Vista tipo Excel: la primera fila muestra las letras de columna; la primera columna muestra los números de fila. En las celdas con fórmula (=...), cada referencia lleva un color distinto. Clic en la referencia: resalta solo esa celda. Clic en el resto de la celda (por ejemplo el = o los operadores): resalta todas las celdas citadas. Repetir el mismo gesto sobre lo ya resaltado lo oculta.
Ejemplos de StepResumen
Si omites Step el incremento por defecto es 1.
| A | B | |
|---|---|---|
| 1 | Código | Resultado |
| 2 | For i = 10 To 1 Step -1 | Cuenta de 10 hasta 1 |
| 3 | For i = 0 To 100 Step 10 | Cuenta 0, 10, 20, … 100 |
| 4 | For i = 2 To 20 Step 2 | Solo números pares: 2, 4, 6… |
Do While — repetir mientras una condición sea verdadera
For Each — recorrer una colección
Exit For — salir antes de tiempo
Practica en Excel
Abre Excel (o copia los datos con el botón de la tabla), sigue los pasos y comprueba el resultado en tu hoja.
- Crea NumerarFilas() y verifica que A1:A10 queda numerado. Modifica el For para numerar de la fila 5 a la 15.
- Escribe datos en A2:A8 y números en B2:B8. Ejecuta RecorrerHastaVacio() y verifica C.
- Agrega valores negativos en B2:B20 y ejecuta ColorearNegativos(). Modifica para que positivos queden en verde.
- Escribe "Laptop" en alguna fila de la col A y ejecuta BuscarProducto().
Ejercicios de práctica
Ejercicio 1 — Números del 1 al 20
Escribe los números del 1 al 20 en la columna A usando For i = 1 To 20.
Ver solución sugerida
Ejercicio 2 — Múltiplos de 5
Usa Step 5 para escribir en la columna A los múltiplos de 5 desde 5 hasta 100.
Ver solución sugerida
Ejercicio 3 — Tabla de multiplicar
Escribe la tabla de multiplicar del 7 en la columna A (7×1=7, 7×2=14, … 7×12=84) usando un bucle For.
Ver solución sugerida
Ejercicio 4 — Suma de un rango
Escribe 10 números en B1:B10. Usa For Each para sumarlos en una variable y mostrar el total con MsgBox.
Ver solución sugerida
Ejercicio 5 — Cuenta atrás
Usa For i = 10 To 1 Step -1 para escribir "10, 9, 8... 1" en A1:A10 y en A11 escribe "¡Despegue!".
Ver solución sugerida
Ejercicio 6 — Contar celdas no vacías ⭐⭐
Escribe datos en algunas celdas de A1:A20 (deja otras vacías). Usa For Each y un contador para contar cuántas tienen contenido. Muestra el resultado con MsgBox.
Ver solución sugerida
Ejercicio 7 — Cuadrados ⭐⭐
Escribe números en A1:A10. Usa un bucle For para escribir en la columna B el cuadrado de cada número de la columna A.
Ver solución sugerida
Ejercicio 8 — Máximo sin función ⭐⭐
Escribe 10 números en B1:B10. Usa For Each para encontrar el valor máximo sin usar la función Max de VBA. Muéstralo con MsgBox.
Ver solución sugerida
Ejercicio 9 — Do While hasta "FIN" ⭐⭐
Escribe nombres en A2:A8 y en A9 escribe "FIN". Usa Do While para leer y mostrar en Debug.Print cada nombre hasta encontrar "FIN".
Ver solución sugerida
Ejercicio 10 — Todas las hojas ⭐⭐
Usa For Each hoja In Worksheets para recorrer todas las hojas del libro y mostrar sus nombres en la ventana Inmediata con Debug.Print.
Ver solución sugerida
Ejercicio 11 — Contar valores mayores que 100 ⭐⭐⭐
Escribe 15 números en B1:B15 (mezcla valores menores y mayores que 100). Usa For Each para contar cuántos son mayores que 100 y escribe ese conteo en D1.
Ver solución sugerida
Ejercicio 12 — Colorear urgentes ⭐⭐⭐
Escribe textos en A1:A15, algunos de ellos conteniendo la palabra "urgente". Usa For Each e InStr() para colorear en rojo las celdas que contengan esa palabra (sin importar mayúsculas).
Ver solución sugerida
Ejercicio 13 — Primer negativo con Exit For ⭐⭐⭐
Escribe números en B1:B20 (algunos negativos). Usa For i con Exit For para encontrar la primera celda con valor negativo y mostrar su fila con MsgBox.
Ver solución sugerida
Ejercicio 14 — Promedio excluyendo ceros ⭐⭐⭐
Escribe números en C1:C20 (algunos son 0). Usa For Each para calcular el promedio de los valores que NO sean 0. Escribe el resultado en D1.
Ver solución sugerida
Ejercicio 15 — Llenar tablero de multiplicar ⭐⭐⭐
Usa dos bucles For anidados para llenar un tablero de multiplicar del 1 al 10 en el rango A1:J10. Cells(fila, col).Value = fila * col.