Cómo usar los bucles For-Next en Excel 2016 VBA

Cómo usar los bucles For-Next en Excel 2016 VBA

El tipo de bucle más simple en la programación de Excel VBA es un bucle For-Next. El bucle está controlado por una variable de contador, que comienza en un valor y se detiene en otro valor. Los enunciados entre el enunciado For y el enunciado Siguiente son los enunciados que se repiten en el ciclo.

Un ejemplo para el siguiente

El siguiente ejemplo utiliza un bucle For-Next para sumar los primeros 1000 números positivos. La variable Total comienza en cero. Entonces ocurre el bucle. La variable Cnt es el contador de bucle. Comienza como 1 y se incrementa en 1 cada vez que pasa por el ciclo. El ciclo termina cuando Cnt es 1,000.

Este ejemplo tiene solo una declaración dentro del ciclo. Esta declaración agrega el valor de Cnt a la variable Total. Cuando finaliza el ciclo, un MsgBox muestra la suma de los números.

Sub AddNumbers ()
  Dim total como doble
  Dim Cnt tan largo
  Total = 0
  Para Cnt = 1 a 1000
    Total = Total + Cnt
  Siguiente Cnt
  MsgBox Total
End Sub

Debido a que el contador de bucle es una variable normal, puede escribir código para cambiar su valor dentro del bloque de código entre las instrucciones For y Next. Sin embargo, esta es una práctica muy mala .

Ejemplos para el siguiente con un paso

Puede usar un valor de Paso para omitir algunos valores de contador en un bucle For-Next. Aquí está el ejemplo anterior, reescrito para sumar solo los números impares entre 1 y 1,000:

Sub AddOddNumbers ()
  Dim total como doble
  Dim Cnt tan largo
  Total = 0
  Para Cnt = 1 a 1000 Paso 2
    Total = Total + Cnt
  Siguiente Cnt
  MsgBox Total
End Sub

Esta vez, Cnt comienza como 1 y luego toma valores de 3, 5, 7, etc. El valor de Paso determina cómo se incrementa el contador. Tenga en cuenta que el valor del ciclo superior (1000) no se utiliza en realidad porque el valor más alto de Cnt será 999.

Aquí hay otro ejemplo que usa un valor de Paso de 3. Este procedimiento funciona con la hoja activa y aplica un sombreado gris claro a cada tercera fila, desde la fila 1 a la fila 100.

Sub ShadeEveryThirdRow ()
  Dim i tan largo
  Para i = 1 a 100 Paso 3
    Filas (i) .Interior.Color = RGB (200, 200, 200)
  Siguiente yo
End Sub

Vea el resultado de ejecutar esta macro.

Cómo usar los bucles For-Next en Excel 2016 VBA

Usar un bucle para aplicar sombreado de fondo a las filas.

Un ejemplo de For-Next con una instrucción Exit For

Un bucle For-Next también puede incluir una o más declaraciones Exit For dentro del bucle. Cuando VBA encuentra esta declaración, el ciclo termina inmediatamente.

El siguiente ejemplo demuestra la instrucción Exit For. Esta rutina es un procedimiento de función, destinado a ser utilizado en una fórmula de hoja de trabajo. La función acepta un argumento (una variable llamada Str) y devuelve los caracteres a la izquierda del primer dígito numérico. Por ejemplo, si el argumento es "KBR98Z", la función devuelve "KBR".

Función TextPart (Str)
  Dim i tan largo
  TextPart = ""
  Para i = 1 a Len (Str)
    If IsNumeric (Mid (Str, i, 1)) Entonces
      Salir para
    Demás
      TextPart = TextPart & Mid (Str, i, 1)
    Terminara si
  Siguiente yo
Función final

El bucle For-Next comienza con 1 y termina con el número que representa el número de caracteres de la cadena. El código usa la función Mid de VBA para extraer un solo carácter dentro del bucle. Si se encuentra un carácter numérico, se ejecuta la instrucción Exit For y el ciclo finaliza prematuramente.

If the character is not numeric, it is appended to the returned value (which is the same as the function’s name). The only time the loop will examine every character is if the string passed as the argument contains no numeric characters.

A nested For-Next example

You can have any number of statements in the loop and nest For-Next loops inside other For-Next loops.

The following example uses a nested For-Next loop to insert random numbers into a 12-row-by-5-column range of cells. Notice that the routine executes the inner loop (the loop with the Row counter) once for each iteration of the outer loop (the loop with the Col counter). In other words, the routine executes the Cells(Row, Col) = Rnd statement 60 times.

Cómo usar los bucles For-Next en Excel 2016 VBA

These cells were filled by using a nested For-Next loop.

Sub FillRange()
  Dim Col tan largo
  Dim Row tan largo
  Para Col = 1 a 5
    Para Fila = 1 a 12
      Celdas (fila, columna) = Rnd
    Fila siguiente
  Siguiente columna
End Sub

El siguiente ejemplo usa bucles For-Next anidados para inicializar una matriz tridimensional con el valor 100. Esta rutina ejecuta la instrucción en el medio de todos los bucles (la instrucción de asignación) 1,000 veces (10 * 10 * 10), cada vez con una combinación diferente de valores para i, j y k:

Sub NestedLoops ()
  Atenuar MyArray (10, 10, 10)
  Dim i tan largo
  Dim j tan largo
  Dim k tan largo
  Para i = 1 a 10
    Para j = 1 a 10
      Para k = 1 a 10
        MyArray (i, j, k) = 100
    Siguiente k
  Siguiente j
Siguiente yo
  'Otras declaraciones van aquí
End Sub

Aquí hay un ejemplo final que usa bucles For-Next anidados, con un valor Step. Este procedimiento crea un tablero de ajedrez cambiando el color de fondo de las celdas alternas.

Cómo usar los bucles For-Next en Excel 2016 VBA

Usando bucles para crear un patrón de tablero de ajedrez.

El contador de filas recorre un ciclo de 1 a 8. Una construcción If-Then determina qué estructura anidada For-Next usar. Para las filas impares, el contador Col comienza con 2. Para las filas pares, el contador Col comienza con 1. Ambos bucles usan un valor de Paso de 2, por lo que las celdas alternativas se ven afectadas. Dos declaraciones adicionales hacen que las celdas sean cuadradas (como un tablero de ajedrez real).

Sub MakeCheckerboard ()
  Dim R tan largo, C tan largo
  Para R = 1 a 8
    Si WorksheetFunction.IsOdd (R) Entonces
     Para C = 2 a 8 Paso 2
       Celdas (R, C) .Interior.Color = 255
     Siguiente C
    Demás
     Para C = 1 a 8 Paso 2
       Celdas (R, C) .Interior.Color = 255
     Siguiente C
    Terminara si
  Siguiente R
  Filas ("1: 8"). RowHeight = 35
  Columnas ("A: H"). ColumnWidth = 6.5
End Sub

Cómo programar una reunión de Skype

Cómo programar una reunión de Skype

Aprenda a programar reuniones efectivas en Skype Empresarial desde Outlook o la aplicación de Skype. Siga nuestros sencillos pasos para una mejor colaboración.

Cómo usar Pegado especial en Excel 2016

Cómo usar Pegado especial en Excel 2016

Aprende a usar la función de Pegado Especial en Excel 2016 para optimizar la forma en que insertas datos en tus hojas de cálculo. Controla qué información se pega y realiza operaciones matemáticas simples con facilidad.

Funciones de Excel para trabajar con números hexadecimales, octales, decimales y binarios

Funciones de Excel para trabajar con números hexadecimales, octales, decimales y binarios

Descubre las funciones de Excel para convertir entre binario, octal, decimal y hexadecimal con esta tabla informativa y consejos útiles para optimizar tu trabajo.

Instalar y activar un complemento de Power Query de Excel

Instalar y activar un complemento de Power Query de Excel

Completa guía sobre cómo instalar y activar el complemento de Power Query en Excel 2010 y 2013, y su uso en Excel 2016. Aprende a gestionar datos de manera efectiva en Excel.

Access 2019: Cómo editar y modificar una base de datos de Access

Access 2019: Cómo editar y modificar una base de datos de Access

Aprende a modificar y editar bases de datos en Access 2019, incluyendo cómo nombrar campos, agregar y eliminar campos, y definir tipos de datos. ¡Optimiza tu trabajo con Access!

Cómo usar el comando Ir a en Word 2016

Cómo usar el comando Ir a en Word 2016

El comando Ir a en Word 2016 es una herramienta poderosa para navegar rápidamente a una página específica o a elementos dentro del documento. Aprende a optimizar tu flujo de trabajo con este práctico comando.

Cómo resaltar fechas de fin de semana en Excel

Cómo resaltar fechas de fin de semana en Excel

Aprende cómo resaltar fechas de fin de semana en Excel utilizando formato condicional para mejorar la gestión de tus datos de programación.

Cómo insertar un enlace para enviar un correo electrónico en una hoja de cálculo de Excel 2010

Cómo insertar un enlace para enviar un correo electrónico en una hoja de cálculo de Excel 2010

Aprenda a insertar un hipervínculo "mailto" en Excel 2010 para crear correos electrónicos de manera simple y eficiente.

Cómo usar las opciones de pegado y Pegado especial en Word 2007

Cómo usar las opciones de pegado y Pegado especial en Word 2007

Aprenda a utilizar las opciones de pegado y Pegado especial en Word 2007 para manejar eficazmente bloques de texto. Optimizando su formato y presentación.

Cómo modificar un gráfico SmartArt en PowerPoint

Cómo modificar un gráfico SmartArt en PowerPoint

Descubre cómo modificar un gráfico SmartArt en PowerPoint incluyendo cambios de diseño, estructura y texto. Mejora tus presentaciones con estos consejos SEO.