VBA Bucle a través de una matriz / Recorrer elementos de una matriz.
Este tutorial le enseñará cómo hacer un bucle a través de una matriz en VBA. Hay dos formas principales de recorrer matrices con VBA:
- Bucle ForEach – El bucle For Each recorrerá cada elemento de la matriz.
- Bucle ForNext – El bucle For Next recorrerá las posiciones de inicio y final de la matriz especificadas (podemos utilizar las funciones UBound y LBound para recorrer toda la matriz).
Bucle For Each
El Bucle For Each le permite hacer un bucle a través de cada elemento de la matriz.
Sub bucleMatrizEstatica()
'declarar la variable de la matriz
Dim nombres(1 To 4) As String
'populate the array
nombres(1) = "Bob"
nombres(2) = "Peter"
nombres(3) = "Keith"
nombres(4) = "Sam"
'declarar una variable para guardar el elemento de la matriz
Dim item as variant
'bucle a través de toda la matriz
For Each item in nombres
'mostrar los elementos en la ventana inmediato
Debug.Print item
Next item
End Sub
El procedimiento anterior recorrerá todos los nombres de la matriz.
Bucle For Next
El bucle For Next recorrerá cada elemento en una posición inicial y final especificada de la matriz.
Recorrer parte de la matriz
Puede especificar manualmente las posiciones de inicio y final de su bucle. Esto puede ser apropiado si conoce el tamaño de su matriz y/o sólo quiere recorrer parte de una matriz.
Sub bucleForNext()
'Declarar una variable tipo matriz
Dim nombres(1 To 4) As String
'Llenar la variable
nombres(1) = "Bob"
nombres(2) = "Peter"
nombres(3) = "Keith"
nombres(4) = "Sam"
'Declarar una variable tipo entero
Dim i As Integer
'Recorrer desde la posición 2 a la posición 3 de la matriz
For i = 2 To 3
'Mostrar el nombre en la ventana inmediato
Debug.Print nombres(i)
Next i
End Sub
En el ejemplo anterior, hemos recorrido las posiciones 2 y 3 del array. La ventana inmediata devolvería los nombres de la siguiente manera
Recorrer toda la matriz
A continuación, utilizaremos las funciones UBound y LBound para recorrer una matriz completa. Esto es extremadamente útil si las posiciones de inicio y fin del arreglo pueden cambiar (por ejemplo, un arreglo dinámico):
Sub bucleForNextDinamico()
'Declarar una variable tipo matriz
Dim nombres() As String
'Inicializar la matriz
ReDim nombres(1 To 4)
'Llenar la matriz
nombres(1) = "Bob"
nombres(2) = "Peter"
nombres(3) = "Keith"
nombres(4) = "Sam"
'Declarar una variable tipo entero
Dim i As Integer
'loop from the lower bound of the array to the upper bound of the array - the entire array
'bucle desde el límite inferior de la matriz hasta el límite superior de la matriz - toda la matriz
For i = LBound(nombres) To UBound(nombres)
'mostrar el nombre en la ventana inmediato
Debug.Print nombres(i)
Next i
End Sub
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!Learn More!