VBA String Array | Com es pot declarar i inicialitzar la matriu de cadenes a Excel VBA?

Matriu de cadenes VBA d'Excel

A VBA, la matriu de cadenes no és res més que una variable de matriu que pot contenir més d’un valor de cadena amb una sola variable.

Per obtenir un exemple, mireu el codi VBA següent.

Codi:

 Sub String_Array_Example () Dim CityList (1 a 5) As Variant CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Calcuta" CityList (4) = "Hyderabad" CityList (5) = "Orissa" MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5) End Sub 

Al codi anterior, he declarat com a variable de matriu i he assignat la longitud d'una matriu com a 1 a 5.

 Dim CityList (1 a 5) com a variant 

Per a aquesta variable de matriu, he assignat 5 noms de ciutats que mencionen cada matriu del parèntesi.

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

A continuació, he escrit un codi per mostrar aquests noms de ciutats al quadre de missatges.

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

Quan executi aquest codi, rebrem un quadre de missatge que mostra tots els noms de les ciutats en un únic quadre de missatge.

Tots sabem que això ha estalviat molt de temps del nostre horari eliminant la tasca de declarar variables individuals per a cada ciutat. No obstant això, una cosa més que heu d’aprendre és que encara podem reduir el codi de línia que escrivim per als valors de la cadena. Vegem com escrivim codi per a matrius de cadenes VBA.

Exemples de matriu de cadenes a Excel VBA

A continuació es mostren els exemples d’una matriu de cadenes d’excel vba.

Podeu descarregar aquesta plantilla Excel de matriu de cadena VBA aquí: plantilla Excel de matriu de cadena VBA

Exemple 1

Com hem vist al codi anterior, hem après que podem emmagatzemar més d'un valor a la variable segons la mida de la matriu determinada.

Ara el que hem de fer és no decidir la longitud de la matriu amb suficient antelació.

Codi:

 Sub String_Array_Example1 () Dim CityList () Com a variant final Sub 

Com podeu veure més amunt dins del parèntesi, no he escrit cap extensió. Ara, per a aquesta variable, inserim valors mitjançant la funció VBA ARRAY.

Dins de la matriu, passeu els valors entre cometes dobles separades per una coma (,).

Codi:

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

Ara conserveu el codi antic per mostrar el resultat dels noms de les ciutats al quadre de missatges de VBA.

Codi:

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

Un dels canvis que he fet al codi anterior és que no hem decidit el límit inferior i el límit superior d’una variable de matriu i hem utilitzat la funció ARRAY. El recompte de matrius començarà de 0 i no de 1.

Per tant, aquesta és la raó per la qual hem esmentat els valors CityList (0), ClityList (1), CityList (2), CityList (3) i CityList (4).

Ara executeu el codi mitjançant la tecla de drecera Excel F5 o manualment, obtenim el mateix resultat que obtenim del codi anterior.

Exemple 2

Matriu de cadenes VBA amb funcions LBOUND & UBOUND

Si no voleu mostrar tota la llista de ciutats en un quadre de missatge únic, heu d'incloure bucles, definiu una variable més per a bucles.

Ara, per incloure el bucle FOR NEXT, no estem segurs de quantes vegades hem d'executar el codi, en aquest cas el podem decidir 5 vegades, però aquesta no és la manera correcta d'abordar el problema. Llavors, què tal la idea d'un identificador automàtic de longitud de matriu de nivell inferior i superior ???

Quan obrim el bucle FOR NEXT, normalment decidim la longitud del bucle d’1 a 5 o d’1 a 10 segons la situació. En lloc d’introduir els números manualment, fem servir les funcions LBOUND i UBOUND per decidir automàticament el valor inferior i el valor superior.

Per a LBound i Ubound he proporcionat el nom de la matriu, és a dir, CityList. VBA LBound identifica el valor inferior de la variable de matriu i la funció VBA UBound identifica el valor superior de la variable de matriu.

Ara mostreu el valor al quadre de missatge, en lloc d'inserir el número de sèrie, deixeu que la variable de bucle "k" prengui el valor de la matriu automàticament.

Codi:

 Sub String_Array_Example1 () Dim CityList () Com a variant Dim k As Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") Per a k = LBound (CityList) A UBound (CityList) MsgBox CityList (k) Següent k Final sub 

Ara, el quadre de missatge mostrarà cada nom de ciutat per separat.

Exemple 3

Matriu de cadenes VBA amb funció de divisió

Ara suposem que teniu noms de ciutats com els següents.

Bangalore; Bombai; Calcuta; Hydrabad; Orissa

En aquest cas, totes les ciutats es combinen junt amb els dos punts que separen cada ciutat. En aquests casos, hem d’utilitzar la funció SPLIT per separar cada ciutat.

Per a Expressió subministrar la llista de ciutats.

Codi:

 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) Next k End Sub 

El següent argument és "Delimitador", és a dir, quin és el caràcter que separa cada ciutat d'altres ciutats, en aquest cas, "Colon".

Codi:

 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 ) Següent Finalitzar sub 

Ara la funció SPLIT divideix els valors també determina la longitud de matriu més alta.

Coses que cal recordar

  • LBOUND i UBOUND són funcions per determinar les longituds de la matriu.
  • La funció ARRAY pot contenir molts valors per a una variable declarada.
  • Una vegada, si voleu utilitzar la funció ARRAY, no decidiu la longitud de la matriu.