Vba for loop (para el siguiente, para cada uno)

Puntos clave

Para el siguiente bucle

VBA FOR NEXT es un bucle fijo que utiliza un contador para ejecutar iteraciones. En términos simples, debe especificar la cantidad de veces que desea ejecutar el bucle y, una vez que alcance esa cantidad de bucles, se detendrá automáticamente. Por eso es un bucle fijo y el más popular entre los desarrolladores de VBA.

Sintaxis

Aquí está la sintaxis del bucle VBA For Next:

 For counter = Start To End [Step stepsize] [statements] Next [counter]
a favor-contra-de-principio a fin
  1. Contador : Es una variable que almacena el número de repeticiones y aumenta su valor con cada repetición. Por ejemplo, si el bucle está en su quinta iteración, el valor del contador será cinco y una vez que el bucle ejecute la instrucción para la quinta iteración, el valor del contador cambiará a seis.
  2. Inicio : Es una variable numérica que almacena el valor inicial del contador.
  3. Fin : Es una variable numérica que almacena el valor final del contador.
  4. Tamaño del paso : esta variable especifica un gran aumento o disminución en el valor del contador. De forma predeterminada, el tamaño del paso es uno, pero también puedes usar cualquier valor positivo o negativo.
  5. Declaración : este es un conjunto de código que desea ejecutar en cada iteración del bucle For Next.
  6. Siguiente : Esta es la declaración final para una iteración del bucle y utiliza el valor del contador para indicarle a VBA que repita el bucle y una vez que el contador alcanza el valor final, finaliza el bucle.

Ejemplo a entender para el siguiente bucle

Para entender cómo usarlo para el siguiente ciclo, escribamos un código simple para agregar números de serie en una columna.

ejemplo-para-comprender-para-el-siguiente-ciclo

Para utilizar For Next Loop, puede seguir los siguientes pasos:

  1. Primero, debe declarar una variable que pueda usar para almacenar el valor del contador.
    declare-a-variable
  2. A continuación, debemos asignar el valor del contador a la variable.
    assign-the-counter-value
  3. Ahora es el momento de escribir el código para el bucle, por lo que en la primera línea debe usar la variable contador y establecer los valores inicial y final. Aquí en este código tienes la variable ‘i’ como valor final.
    write-code-for-loop
  4. A partir de ahí, debe escribir un código que pueda agregar los números de serie en la celda activa y luego pasar a la siguiente celda. A medida que el valor del contador aumenta con cada iteración, puede usarlo para ingresar el número de serie en la celda activa y luego puede usar la tecla Mayús para mover la selección a la siguiente celda hacia abajo.
    code-that-can-add-serial-number
  5. Al final, use la siguiente palabra clave y la variable contador para completar el código del bucle.
 Sub AddSerialNumbers() Dim i As Integer i = 10 For i = 1 To i ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate Next i End Sub

Puede ver en la instantánea a continuación que cuando ejecuto este código, comienza desde la celda seleccionada ingresando un número de serie y luego pasa a la siguiente celda en cada iteración.

vba-para-siguiente-bucle-ejemplo-1

Como sabes, For Next es un bucle fijo y en este código, cuando asignas un valor numérico, le dice a VBA que ejecute el bucle esa cantidad de veces.

Y puedes ver la instantánea a continuación que tomé en la segunda iteración del ciclo donde el valor de la variable de contador «i» es dos.

asignar un valor numérico

El punto que estoy tratando de señalar es que la variable de conteo cambia su valor en cada iteración e ingresa ese valor en la celda activa, luego al cambiar se activa la siguiente celda hacia abajo, lo que completa una iteración.

Al final, la palabra clave «Siguiente» es VBA para volver a la primera línea del bucle y repetirlo. Como vio en la sintaxis de For Next, también puede usar un valor de paso en el bucle para operar el contador en función de eso.

Entonces, si usa dos como valor de paso, el código se vería como el siguiente.

 Sub AddSerialNumbers() Dim i As Integer i = 10 For i = 1 To i Step 2 ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate Next i End Sub

Y cuando ejecute este código, habrá en la actividad algo como la siguiente instantánea.

cuando-ejecutas-una-instantánea-de-código

Cuando usa un valor de paso (como el paso 2, que usó en el código anterior), VBA ignora cada segunda iteración en el ciclo y, como puede ver, tiene cinco números con la diferencia de uno en cada número.

Nota : En el ejemplo anterior, ha utilizado ‘i’ como variable de contador, pero también puede utilizar un nombre diferente según su conveniencia.

Para cada bucle posterior

VBA FOR EACH NEXT es un bucle fijo que puede recorrer todos los objetos de una colección. En Para cada siguiente, no es necesario especificar el número de iteraciones. En su lugar, puede especificar una colección de objetos y podrá recorrer todos esos objetos uno por uno.

Sintaxis

Aquí está la sintaxis de VBA para cada bucle posterior:

 For Each Object In Collection [statements] Next [object]
sintaxis-para-vba-para-cada-siguiente-bucle
  1. Objeto : representa el único objeto en la colección de objetos que está recorriendo. En cada iteración, pasa de un objeto a otro.
  2. Colección : esta es una colección de objetos que desea recorrer.
  3. Declaración : Línea(s) de código que desea ejecutar en cada bucle a través de todos los objetos de la colección.
  4. Siguiente : esta es la declaración final de una iteración del bucle y le dice a VBA que pase al siguiente objeto de la colección.

Ejemplo para entender el bucle For Each Next

Para comprender el bucle Para cada siguiente, escribamos código para ocultar todas las hojas excepto la hoja de trabajo activa. Este código verificará el nombre de cada hoja de trabajo y lo hará coincidir con el nombre de la hoja de trabajo activa y lo ocultará si no coincide.

Para utilizar el bucle Para cada siguiente, puede seguir los siguientes pasos:

  1. Primero, debe declarar una variable para usarla como hoja de trabajo.
    code-to-hide-the-all-sheets
  2. Después de eso, use la palabra clave «Para cada uno», luego la variable «mySheet» para la hoja y use «ActiveWorkbook.Worksheets» para la colección de hojas de trabajo del libro activo.
    for-each-mysheet-active-workbook-worsheets
  3. A continuación, debe usar la instrucción IF de VBA para probar si el nombre de la hoja que se encuentra actualmente en esta iteración del bucle NO ES IGUAL a la hoja de trabajo activa y, si esta condición es verdadera, ocultar la hoja que ahora está en el bucle. iteración.
    vba-if-statement-to-test
  4. Al final, tienes la palabra clave SIGUIENTE y “mySheet” la variable para completar el código del bucle.
    next-keyword-and-mysheet

Código final:

 Sub Hide_Other_Sheets() Dim mySheet As Worksheet For Each mySheet In ActiveWorkbook.Worksheets If mySheet.Name <> ActiveSheet.Name Then mySheet.Visible = False End If Next mySheet End Sub

De esta forma se ocultarán todas las hojas de trabajo.

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *