Este tutorial le enseñará cómo recorrer Arrays en VBA.
Hay dos formas principales de recorrer las matrices usando VBA:
- Para cada bucle - For Each Loop recorrerá cada elemento de la matriz.
- Para el siguiente bucle - For Next Loop recorrerá las posiciones iniciales y finales especificadas de la matriz (podemos usar las funciones UBound y LBound para recorrer toda la matriz).
Para cada elemento de la matriz
los Para cada bucle le permite recorrer cada elemento de la matriz.
12345678910111213141516171819 | Sub LoopForArrayStatic ()'declarar una matriz varianteDim strNames (1 To 4) As String'poblar la matrizstrNames (1) = "Bob"strNames (2) = "Peter"strNames (3) = "Keith"strNames (4) = "Sam"'declarar una variante para contener el elemento de la matrizAtenuar elemento como variante'recorrer toda la matrizPara cada elemento en strNames'muestra el elemento en la ventana de depuración.Debug.Print elementoCírculoEnd Sub |
El procedimiento anterior recorrerá todos los nombres de la matriz.
Para el siguiente bucle
For Next Loop recorrerá cada elemento en una posición inicial y final especificada de la matriz.
Bucle a través de parte de la matriz
Puede especificar manualmente las posiciones inicial y final de su bucle. Esto puede ser apropiado si conoce el tamaño de su matriz y / o solo desea recorrer parte de una matriz.
12345678910111213141516 | Sub LoopForNextStatic ()'declarar una matriz varianteDim strNames (1 To 4) As String'poblar la matrizstrNames (1) = "Bob"strNames (2) = "Peter"strNames (3) = "Keith"strNames (4) = "Sam"'declarar un enteroDim i como entero'bucle desde la posición 2 a la posición 3 de la matrizPara i = 2 a 3'muestra el nombre en la ventana inmediataDebug.Print strNames (i)Siguiente yoEnd Sub |
En el ejemplo anterior, hemos recorrido las posiciones 2 y 3 de la matriz. La ventana inmediata devolvería los nombres de la siguiente manera.
Bucle a través de toda la matriz
A continuación, usaremos las funciones UBound y LBound para recorrer una matriz completa. Esto es extremadamente útil si las posiciones inicial y final de la matriz pueden cambiar (por ejemplo, una matriz dinámica):
123456789101112131415161718 | Sub LoopForNextDynamic ()'declarar una matriz varianteDim strNames () como cadena'inicializar la matrizReDim strNames (1 a 4)'poblar la matrizstrNames (1) = "Bob"strNames (2) = "Peter"strNames (3) = "Keith"strNames (4) = "Sam"'declarar un enteroDim i como entero'bucle desde el límite inferior de la matriz hasta el límite superior de la matriz: toda la matrizPara i = LBound (strNames) a UBound (strNames)'muestra el nombre en la ventana inmediataDebug.Print strNames (i)Siguiente yoEnd Sub |