Declarar e inicializar array de cadenas en VBA
En cualquier ejecución de código en cualquier lenguaje de programación, la necesidad de almacenar información a veces es inevitable. Lo bueno es que VBA permite varias opciones a la hora de almacenar datos, y una de ellas son los arrays.
En VBA, los arrays se clasifican en función de su longitud y flexibilidad de tipos de datos.
- Arrays dinámicos - arrays que son variables en longitud y tipo de datos
- Arrays estáticos - arrays que son fijos en longitud y tipo de datos.
Además, los arrays en VBA también se pueden clasificar según sus dimensiones.
- array de una sola dimensión: arrays que tienen una única array de una sola línea.
- array multidimensional: arrays que tienen varias matrices de una sola línea.
Declarar e inicializar array de cadenas dinámicas
Los bloques de código a continuación demostrarán cómo crear e inicializar un array de cadenas.
Método 1: declarar como tipo de datos Variant
Declare un array dinámica creando una variable en un tipo de datos variante. Entonces la array será inicializada por una colección (Array()
).
Sub DynamicArrayDemo()
Dim stringArray As Variant
stringArray = Array("Lion", "Tiger", "Cheetah", "Monkey", "Elephant", "Zebra")
Debug.Print stringArray(3)
End Sub
Salida DynamicArrayDemo
:
Monkey
Método 2: declarar como cadena, luego usar la función Dividir()
Declare un array de cadenas denominada stringArray
sin declarar explícitamente los límites.
Sub DynamicArrayDemo()
Dim stringArray() As String
Dim str As String
str = "Lion,Tiger,Cheetah,Monkey,Elephant,Zebra"
stringArray = Split("Lion,Tiger,Cheetah,Monkey,Elephant,Zebra", ",")
Debug.Print stringArray(2)
End Sub
Salida DynamicArrayDemo
:
Cheetah
Declarar e inicializar array de cadenas estáticas
Los bloques de código a continuación muestran diferentes métodos para declarar e inicializar un array de cadenas estáticas.
Método 1 - Declarar LowerBound
y UpperBound
:
Declare un array de cadenas estática declarando explícitamente su primer y último elemento.
Sintaxis:
Dim stringArray([LowerBound] To [UpperBound]) As String
Parámetros:
[LowerBound] |
El entero clave al que se hace referencia el primer elemento del array. |
[UpperBound] |
El entero clave al que se hace referencia el último elemento del array. |
El siguiente ejemplo declarará un array de cadenas llamada stringArray
con seis elementos del elemento 0 al 5.
Sub StaticArrayDemo()
Dim stringArray(0 To 5) As String
stringArray(0) = "Lion"
stringArray(1) = "Tiger"
stringArray(2) = "Cheetah"
stringArray(3) = "Monkey"
stringArray(4) = "Elephant"
stringArray(5) = "Zebra"
Debug.Print stringArray(4)
End Sub
Salida StaticArrayDemo
:
Elephant
Método 2: cambiar explícitamente el límite inferior
Declare un array de cadenas mediante un valor genérico de límite inferior
.
Option Base 1
Sub StaticArrayDemo()
Dim stringArray(6) As String
stringArray(1) = "Lion"
stringArray(2) = "Tiger"
stringArray(3) = "Cheetah"
stringArray(4) = "Monkey"
stringArray(5) = "Elephant"
stringArray(6) = "Zebra"
Debug.Print stringArray(1)
End Sub
Salida StaticArrayDemo
:
Lion
Método 3: declarar e inicializar usando un array multidimensional
En VBA, puede declarar matrices de hasta 60 dimensiones.
Sintaxis:
Dim stingArray( [LowerBound1] to [UpperBound1],[LowerBound2] to [UpperBound2], . . . ) as String
Parámetros:
[LowerBound1] |
El entero clave es el primer elemento del array al que se hace referencia en la primera dimensión del array. |
[UpperBound1] |
El entero clave es el último elemento del array al que se hace referencia en la primera dimensión del array. |
[LowerBound2] |
El entero clave es el primer elemento del array al que se hace referencia en la segunda dimensión del array. |
[UpperBound2] |
El entero clave es el último elemento del array al que se hace referencia en la segunda dimensión del array. |
En el siguiente ejemplo, se declaró un array multidimensional donde la primera dimensión es de 1 a 5; entonces el otro es 1 a 5.
Sub MultiStaticArrayDemo()
Dim stringArray(1 To 5, 1 To 5) As String
Dim i, j As Integer
For i = 1 To 5
For j = 1 To 5
stringArray(i, j) = "The value of (" & i & "," & j & ") is " & i * j
Debug.Print stringArray(i, j)
Next j
Next i
End Sub
Salida MultiStaticArrayDemo
:
The value of (1,1) is 1
The value of (1,2) is 2
The value of (1,3) is 3
The value of (1,4) is 4
The value of (1,5) is 5
The value of (2,1) is 2
The value of (2,2) is 4
The value of (2,3) is 6
The value of (2,4) is 8
The value of (2,5) is 10
The value of (3,1) is 3
The value of (3,2) is 6
The value of (3,3) is 9
The value of (3,4) is 12
The value of (3,5) is 15
The value of (4,1) is 4
The value of (4,2) is 8
The value of (4,3) is 12
The value of (4,4) is 16
The value of (4,5) is 20
The value of (5,1) is 5
The value of (5,2) is 10
The value of (5,3) is 15
The value of (5,4) is 20
The value of (5,5) is 25