Matriz de cadenas VBA

Matriz de cadenas de Excel VBA

En VBA, la matriz de cadenas no es más que una variable de matriz que puede contener más de un valor de cadena con una sola variable.

Para ver un ejemplo, mire el siguiente código VBA.

Código:

 Sub String_Array_Example () Dim CityList (1 a 5) Como variante CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa" MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5) End Sub 

En el código anterior, he declarado como variable de matriz y he asignado la longitud de una matriz de 1 a 5.

 Dim CityList (1 a 5) como variante 

Para esta variable de matriz, he asignado 5 nombres de ciudades que mencionan cada recuento de matriz entre paréntesis.

CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa"

A continuación, escribí un código para mostrar estos nombres de ciudades en el cuadro de mensaje.

MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5)

Cuando ejecute este código, obtendremos un cuadro de mensaje que muestra todos los nombres de las ciudades en un solo cuadro de mensaje.

Todos sabemos que esto nos ha ahorrado mucho tiempo de nuestro programa al eliminar la tarea de declarar variables individuales para cada ciudad. Sin embargo, una cosa más que debe aprender es que aún podemos reducir el código de línea que escribimos para valores de cadena. Veamos cómo escribimos código para matrices de cadenas VBA.

Ejemplos de matriz de cadenas en Excel VBA

A continuación se muestran los ejemplos de una matriz de cadenas vba de Excel.

Puede descargar esta plantilla de Excel de matriz de cadenas de VBA aquí - Plantilla de Excel de matriz de cadenas de VBA

Ejemplo 1

Como hemos visto en el código anterior, aprendimos que podemos almacenar más de un valor en la variable en función del tamaño de matriz determinado.

Ahora lo que tenemos que hacer es no decidir la longitud de la matriz con mucha anticipación.

Código:

 Sub String_Array_Example1 () Dim CityList () como variante End Sub 

Como puede ver arriba, dentro del paréntesis, no he escrito ninguna extensión. Ahora, para esta variable, insertemos valores usando la función VBA ARRAY.

Dentro de la matriz, pase los valores entre comillas dobles, cada una separada por una coma (,).

Código:

 Sub String_Array_Example () Dim CityList () Como variante CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") End Sub 

Ahora conserve el código anterior para mostrar el resultado de los nombres de las ciudades en el cuadro de mensaje en VBA.

Código:

 Sub String_Array_Example1 () Dim CityList () como variante CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") MsgBox CityList (0) & "," & CityList (1) & " , "& CityList (2) &", "& CityList (3) &", "& CityList (4) End Sub 

Un cambio que hice en el código anterior es que no hemos decidido el límite inferior y el límite superior de una variable de matriz y hemos utilizado la función ARRAY. El recuento de matrices comenzará desde 0, no desde 1.

Entonces, esa es la razón por la que hemos mencionado los valores como CityList (0), ClityList (1), CityList (2), CityList (3) y CityList (4).

Ahora ejecute el código a través de la tecla de acceso directo de Excel F5 o manualmente, obtenemos el mismo resultado que obtenemos del código anterior.

Ejemplo # 2

Matriz de cadenas VBA con funciones LBOUND y UBOUND

En caso de que no desee mostrar toda la lista de ciudades en un solo cuadro de mensaje, entonces necesita incluir bucles, defina una variable más para los bucles.

Ahora, para incluir el bucle FOR NEXT, no estamos seguros de cuántas veces necesitamos ejecutar el código, en este caso, podemos decidirlo como 5 veces, pero esa no es la forma correcta de abordar el problema. Entonces, ¿qué tal la idea de un identificador automático de longitud de matriz de nivel inferior y superior?

Cuando abrimos el bucle FOR NEXT, generalmente decidimos la longitud del bucle entre 1 y 5 o entre 1 y 10, según la situación. En lugar de ingresar los números manualmente, usemos las funciones LBOUND y UBOUND para decidir el valor inferior y el valor superior automáticamente.

Para LBound y Ubound, he proporcionado el nombre de la matriz, es decir, CityList. VBA LBound identifica el valor inferior de la variable de matriz y la función VBA UBound identifica el valor superior de la variable de matriz.

Ahora muestre el valor en el cuadro de mensaje, en lugar de insertar el número de serie, deje que la variable de ciclo "k" tome el valor de la matriz automáticamente.

Código:

 Sub String_Array_Example1 () Dim CityList () Como variante Dim k Como entero CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") Para k = LBound (CityList) To UBound (CityList) MsgBox CityList (k) Siguiente k End Sub 

Ahora el cuadro de mensaje mostrará el nombre de cada ciudad por separado.

Ejemplo # 3

Matriz de cadenas VBA con función de división

Ahora suponga que tiene nombres de ciudades como el siguiente.

Bangalore; Bombay; Calcuta; Hydrabad; Orissa

En este caso, todas las ciudades se combinan junto con los dos puntos que separan cada ciudad. En tales casos, necesitamos usar la función SPLIT para separar cada ciudad.

Para Expresión, proporcione la lista de ciudades.

Código:

 Sub String_Array_Example2 () Dim CityList () As String Dim k As Integer CityList = Split ("Bangalore; Mumbai; Kolkata; Hydrabad; Orissa", For k = LBound (CityList) To UBound (CityList) MsgBox CityList (k) Siguiente k Fin Sub 

El siguiente argumento es “Delimitador”, es decir, cuál es el carácter que separa cada ciudad de otras ciudades, en este caso, “Colón”.

Código:

 Sub String_Array_Example2 () Dim CityList () As String Dim k As Integer CityList = Split ("Bangalore; Mumbai; Kolkata; Hydrabad; Orissa", ";") For k = LBound (CityList) To UBound (CityList) MsgBox CityList (k ) Siguiente k Fin Sub 

Ahora los valores divididos de la función SPLIT también determinan la longitud más alta de la matriz.

Cosas para recordar

  • LBOUND y UBOUND son funciones para determinar las longitudes de la matriz.
  • La función ARRAY puede contener muchos valores para una variable declarada.
  • Una vez, si desea utilizar la función ARRAY, no decida la longitud de la matriz.