En VBA, el bucle se usa cuando necesita realizar la misma tarea varias veces hasta que se cumpla una condición (o hasta que una condición sea verdadera).
En este tutorial, aprenderá a usar For Next Loop en Excel VBA.
Si está interesado en aprender VBA de forma sencilla, consulte mi Capacitación en línea de Excel VBA.
Usando FOR NEXT Loop en Excel VBA
El bucle "For Next" funciona ejecutando el bucle el número de veces especificado.
Por ejemplo, si le pido que sume los números enteros del 1 al 10 manualmente, sumaría los dos primeros números, luego agregaría el tercer número al resultado, luego agregaría el cuarto número al resultado, y así sucesivamente …
¿No es así?
La misma lógica se usa en el bucle For Next en VBA.
Usted especifica cuántas veces desea que se ejecute el bucle y también especifica qué desea que haga el código cada vez que se ejecuta el bucle.
Aquí está el formato de bucle For Next que debe usar en VBA para agregar los primeros 10 números enteros.
Para i = 1 a 10 [sume el i-ésimo entero positivo al resultado] Siguiente i
Ahora echemos un vistazo a algunos ejemplos de cómo usar el ciclo For Next.
Ejemplo 1: suma de los primeros 10 números enteros positivos
A continuación se muestra el código que agregará los primeros 10 enteros positivos usando un bucle For Next. A continuación, mostrará un cuadro de mensaje que muestra la suma de estos números.
Sub AddNumbers () Dim Total As Integer Dim Count As Integer Total = 0 Para Count = 1 a 10 Total = Total + Count Siguiente Count MsgBox Total End Sub
En este código, el valor de Total se establece en 0 antes de ingresar al bucle For Next.
Una vez que entra en el ciclo, mantiene el valor total después de cada ciclo. Entonces, después del primer ciclo, cuando el Contador es 1, el valor "Total" se convierte en 1, y después del segundo ciclo se convierte en 3 (1 + 2), y así sucesivamente.
Y finalmente, cuando el ciclo termina y cuando Total tiene la suma de los primeros 10 enteros positivos, un MsgBox simplemente muestra el resultado en un cuadro de mensaje.
Haga clic aquí para descargar el archivo de ejemplo
Ejemplo 2: suma de los primeros 5 números enteros pares positivos
Para sumar los primeros cinco números enteros pares positivos (es decir, 2, 4, 6, 8 y 10), necesita un código similar con una condición para considerar solo los números pares e ignorar los números impares.
Aquí hay un código que lo hará:
Sub AddEvenNumbers () Dim Total As Integer Dim Count As Integer Total = 0 For Count = 2 to 10 Step 2 Total = Total + Count Siguiente recuento MsgBox Total End Sub
Tenga en cuenta que comenzamos el valor Count desde 2 y también usamos el Paso 2 en la sintaxis For.
El paso 2 le indicaría al código que incremente el valor de "Recuento" en 2 cada vez que se ejecute el ciclo. Entonces, el valor de Count comienza desde 2 y luego se convierte en 4, 6, 8 y 10 a medida que ocurre el bucle.
NOTA: Otra forma de hacer esto podría ser ejecutar el ciclo de 1 a 10 y dentro del ciclo verificar si el número es par o impar. Sin embargo, usar Step, en este caso, es una forma más eficiente ya que no requiere que el ciclo se ejecute 10 veces, sino solo 5 veces.
Haga clic aquí para descargar el archivo de ejemplo.
Ejemplo 3: obtener la parte numérica de una cadena alfanumérica
El bucle "For Next" también se puede utilizar para recorrer cada carácter de una cadena.
Por ejemplo, si tiene una lista de cadenas alfanuméricas, puede usar el bucle For Next para extraer los números (como se muestra a continuación):
Aquí hay un código que crea una función personalizada en VBA que se puede usar como cualquier otra función de hoja de trabajo.
Extrae la parte numérica de la cadena alfanumérica.
Función GETNUMERIC (Cl As Range) Dim i As Integer Dim Resultado como Long For i = 1 To Len (Cl) If IsNumeric (Mid (Cl, i, 1)) Then Result = Result & Mid (Cl, i, 1) End Si Siguiente i GetNumeric = Función de fin de resultado
En este código, el número de veces que se ejecuta el bucle depende de la longitud de la cadena alfanumérica (utiliza la función LEN para encontrar la longitud de la cadena).
Debe poner esta función en la ventana de código del módulo y luego puede usarla como cualquier otra función de la hoja de trabajo.
Haga clic aquí para descargar el archivo de ejemplo.
Ejemplo 4: Obtener números aleatorios en el rango seleccionado
Suponga que desea ingresar rápidamente números aleatorios en las celdas seleccionadas, aquí el código que lo hará.
Sub RandomNumbers () Dim MyRange como rango Dim i como entero, j como entero Establecer MyRange = Selección para i = 1 Para MyRange.Columns.Count Para j = 1 Para MyRange.Rows.Count MyRange.Cells (j, i) = Rnd Siguiente j Siguiente i Fin Sub
Este es un ejemplo de bucle For Next anidado donde se usa un bucle For dentro de un bucle For.
Suponga que hace una selección de 10 filas y 4 columnas, el valor de i varía de 1 a 4 y el valor de j varía de 1 a 10.
Cuando se ejecuta el primer ciclo For, el valor de i es 1. Luego se mueve al segundo ciclo For, que se ejecuta 10 veces (para cada fila).
Una vez que el segundo ciclo For se ha ejecutado 10 veces, vuelve al primer ciclo For donde ahora el valor de i se convierte en 2. De nuevo, el siguiente ciclo For se ejecuta 10 veces.
Así es como funciona el ciclo For Next anidado.
Haga clic aquí para descargar el archivo de ejemplo.
También le pueden gustar los siguientes tutoriales de Excel VBA:
- Trabajar con celdas y rangos en Excel VBA.
- Trabajar con hojas de trabajo en Excel VBA.
- Trabajar con libros de trabajo usando VBA.
- Uso de declaraciones IF Then Else en VBA.
- Excel VBA Seleccionar caso.
- Creación de una función definida por el usuario en Excel.
- Eventos de Excel VBA: una guía fácil (y completa)
- Cómo grabar una macro en Excel.
- Cómo ejecutar una macro en Excel.
- Cómo crear un complemento en Excel.
- Cómo guardar y reutilizar macros usando el libro de macros personal de Excel.
- Ejemplos de macros de Excel útiles para principiantes.
- Usando la función InStr en VBA.