Contenido
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:
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:
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:
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.