¿Cómo usar la instrucción For Each Next en VBA?

La instrucción For Each…Next en VBA se utiliza para iterar a través de elementos en una colección o una matriz. Por ejemplo, puedes usarlo para recorrer todos los elementos de una matriz, una colección, los elementos de un rango en Excel, entre otros. Aquí te muestro un ejemplo básico de cómo usarlo:

Supongamos que tienes una matriz de números y quieres imprimir cada número en la ventana inmediata:

VBA
Sub RecorrerMatriz()
    Dim numeros(3) As Integer
    Dim numero As Variant
    
    ' Asignar valores a la matriz
    numeros(0) = 10
    numeros(1) = 20
    numeros(2) = 30
    numeros(3) = 40
    
    ' Iterar a través de la matriz con For Each...Next
    For Each numero In numeros
        Debug.Print numero
    Next numero
End Sub

En este ejemplo, numeros es una matriz que contiene cuatro elementos. La instrucción For Each…Next recorre cada elemento de la matriz y lo imprime en la ventana inmediata usando Debug.Print.

También puedes usar For Each…Next para recorrer elementos en una colección, como los elementos de una hoja de Excel, por ejemplo:

VBA
Sub RecorrerCelda()
    Dim celda As Range
    
    ' Recorrer cada celda en el rango A1:A10
    For Each celda In ThisWorkbook.Sheets("Hoja1").Range("A1:A10")
        ' Realizar alguna operación con cada celda
        Debug.Print celda.Value
    Next celda
End Sub

En el caso de las celdas en Excel, For Each…Next te permite ir celda por celda en un rango (digamos, desde A1 hasta A10) sin tener que preocuparte por los números específicos de las celdas. Simplemente le dices que quieres trabajar con cada celda en ese rango y él se encarga de llevarte a través de todas ellas para que puedas hacer algo con su contenido, como imprimirlo, sumarlo, o realizar cualquier otra acción.

Aquí tienes un ejemplo más detallado. Supongamos que tienes una lista de nombres y quieres imprimir cada nombre en la ventana inmediata:

VBA
Sub ImprimirNombres()
    Dim nombres As Variant
    Dim nombre As Variant
    
    ' Lista de nombres
    nombres = Array("Juan", "María", "Carlos", "Ana")
    
    ' Iterar a través de la lista de nombres con For Each...Next
    For Each nombre In nombres
        Debug.Print nombre
    Next nombre
End Sub

En este caso, nombres es una matriz que contiene cuatro nombres. La estructura For Each…Next recorre cada elemento de la matriz y lo imprime en la ventana inmediata utilizando Debug.Print.

Este código puede adaptarse para trabajar con diferentes tipos de colecciones o conjuntos de datos.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

¡Únete a nuestro Grupo de Facebook!