Saltar al contenido

Cómo hacer y usar un bucle FOR-NEXT en VBA Excel – Rápido y fácil

29 abril 2020

Visual Basic se caracteriza por utilizar programación estructurada en el código con el objetivo de mejorar la calidad y la lectura del mismo.  Las estructuras como for – next permiten definir la cantidad de veces que se ejecuta una instrucción. El bucle for-next se puede utilizar en VBA Excel para repetir una acción por un tiempo determinado.

Por ejemplo, el bucle for next se puede utilizar para dar comienzo a una numeración desde el punto de partida que se escoja hasta un valor final limitado.  Para que se cumpla se le puede asignar varias condiciones. 

¿Qué es la programación estructurada?

La programación estructurada es un paradigma de la programación que utiliza segmento de código que tiene un punto de entrada y uno de salida. Se utilizan funciones subrutinas y estructuras de control. 

Todo esto se hace con la intención de tener un código más organizado y fácil de leer. Este tipo de programación utiliza bucles, que son secuencias que se repiten N cantidad de veces. El bucle se repite hasta que se cumple una condición o hasta que llega a un número final

Bucle for next en VBA

¿Cómo hacer y usar un bucle for-next en VBA?

El bucle for-next es uno de los tipos de bucles más utilizados en VBA por su gran utilizad. Su sintaxis es fácil de entender: 

for variable_de_inicio to valor_limite
     Instrucciones dentro del bucle
next variable_de_inicio ‘incrementa la variable y fin de la instrucción

variable_de_inicio: Es la variable que contiene el valor inicial. Por lo general antes de iniciar el bucle se le asigna un valor a la variable y su sintaxis sería la siguiente: 

variable_de_inicio = 1

Ese valor se va incrementando a medida que se ejecute las condiciones del bucle, hasta que llegue al valor final. 

valor_limite: Esta variable es la que da inicio a la secuencia y cuenta de las repeticiones. Si la variable de inicio llega hasta el valor limite entonces se detiene el bucle. Puede ser una variable con un valor asignado antes de la instrucción o puede ser un valor directo. Ejemplo si queremos que la variable de inicio cuente solo hasta 10 la sintaxis sería la siguiente: 

for variable_de_inicio to 10

next variable_de_inicio: es la última línea de sentencia de las instrucciones del bucle. La palabra next seguida del nombre de la variable incrementa su valor en uno. 

Ejemplo de bucle for-next en VBA

formulario bucle for next

El bucle for-next es muy fácil de utilizar en Visual Basic, además que se puede utilizar con muchos objetos de Excel. Se creo un formulario con dos cuadros de texto para que el usuario coloque el valor de inicio y el valor final del bucle. En el formulario hay un botón que al presionarlo llena un cuadro combinado.  El código asignado al formulario y al botón sería el siguiente:  

Dim i As Integer
Dim lim As Integer

Private Sub btnContar_Click()
     lim = limite.Text
     For i = inicio.Text To lim
          resultado.AddItem i
          Next i
End Sub

  • Las primeras dos líneas de código es la creación de las variables i y lim como un valor numerico de tipo entero.
  • Luego al hacer clic en el botón se debería asignar el valor a la variable lim dependiente del valor limite que coloco el usuario. 
  • Comienza el bucle for-next donde el valor de i es igual al valor de inicio que coloco el usuario. Ese valor va a ir incrementando hasta que sea igual al valor de lim. 
  • Cada vez que se ejecute el bucle se agrega un nuevo valor al cuadro combinado. Por último la variable i incrementa su valor + 1 cuando finaliza la instrucción.  

Bucle Do-Loop en VBA

Existen dos tipos de estructuras Do-Loop que son Do-While y Do-Until. El Do-While repite las intrucciones mientras que se cumpla una condición, es decir que su valor sea true. A diferencia de Do-Until que se cumple hasta que la condición cambiar su valor a true, es decir verdadero.

La sintaxis para ambas estructura es la misma, lo que varia es la palabra while por until. 

Do while condicion ‘while puede cambiar por until
    Instrucciones dentro del bucle
Exit do 
    Instrucciones de salida del bucle
loop