VBA String Array - Cum să declarați și să inițializați matricea de șiruri în Excel VBA?

Excel VBA String Array

În VBA, o matrice String nu este altceva decât o variabilă matrice care poate conține mai mult de o valoare șir cu o singură variabilă.

De exemplu, uitați-vă la codul VBA de mai jos.

Cod:

Sub String_Array_Example () Dim CityList (1 To 5) As Variant 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

În codul de mai sus, am declarat ca variabilă de matrice și am atribuit lungimea unei matrice de la 1 la 5.

Dim CityList (1 până la 5) ca variantă

Pentru această variabilă de matrice, am atribuit 5 nume de orașe menționând fiecare număr de matrice din paranteză.

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

Apoi, am scris un cod pentru a afișa aceste nume de orașe în caseta de mesaj.

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

Când rulez acest cod, vom primi o casetă de mesaj care afișează toate numele orașelor într-o singură casetă de mesaje.

Știm cu toții că acest lucru a economisit atât de mult timp din programul nostru, eliminând sarcina de a declara variabile individuale pentru fiecare oraș. Cu toate acestea, încă un lucru pe care trebuie să-l învățați este că putem reduce codul de linie pe care îl scriem pentru valorile șirului. Să vedem cum scriem codul pentru matricile de șiruri VBA.

Exemple de matrice de șiruri în Excel VBA

Mai jos sunt exemple de matrice de șiruri VBA excel.

Exemplul nr. 1

După cum am văzut în codul de mai sus, am aflat că putem stoca mai multe valori în variabilă pe baza dimensiunii matricei determinate.

Acum, ceea ce trebuie să facem este să nu decidem lungimea matricei cu mult timp în avans.

Cod:

Sub String_Array_Example1 () Dim CityList () Ca Variant End Sub

După cum puteți vedea mai sus în paranteză, nu am scris nicio lungime. Acum, pentru această variabilă, să introducem valori utilizând funcția VBA ARRAY.

În interiorul matricei trece valorile pe ghilimele duble, fiecare separată printr-o virgulă (,).

Cod:

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

Acum păstrați vechiul cod pentru a afișa rezultatul numelor orașelor în caseta de mesaje din VBA.

Cod:

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

O modificare pe care am făcut-o în codul de mai sus este că nu am decis limita inferioară și limita superioară a unei variabile de matrice și am folosit funcția ARRAY Numărul de matrice va începe de la 0, nu de la 1.

Deci, acesta este motivul pentru care am menționat valorile ca CityList (0), ClityList (1), CityList (2), CityList (3) și CityList (4).

Acum executați codul prin intermediul tastei rapide F5 sau manual. Obținem același rezultat pe care îl obținem din codul anterior.

Exemplul nr. 2

VBA String Array cu funcții LBOUND & UBOUND

În cazul în care nu doriți să afișați toate listele de orașe într-o singură casetă de mesaj, atunci trebuie să includeți bucle, definiți încă o variabilă pentru bucle.

Acum, pentru a include bucla FOR NEXT, nu suntem siguri de câte ori trebuie să rulăm codul. În acest caz, o putem decide de 5 ori, dar nu aceasta este modalitatea corectă de a aborda problema. Deci, ce zici de ideea identificatorului auto al lungimii matricei de nivel inferior și superior ???

Când deschidem bucla FOR NEXT, de obicei decidem lungimea buclei ca 1 la 5 sau 1 la 10 în funcție de situație. În loc să introducem numerele manual, să folosim funcțiile LBOUND și UBOUND pentru a decide automat valoarea inferioară și cea superioară.

Pentru LBound și Ubound, am furnizat un nume de matrice, adică CityList. VBA LBound identifică valoarea inferioară a variabilei matrice, iar funcția VBA UBound identifică valoarea superioară a variabilei matrice.

Acum arătați valoarea în caseta de mesaj, în loc să introduceți numărul de serie, lăsați variabila de buclă „k” să ia automat valoarea matricei.

Cod:

Sub String_Array_Example1 () Dim CityList () As Variant Dim k As Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") For k = LBound (CityList) To UBound (CityList) MsgBox CityList (k) Următorul k End Sub

Acum, caseta de mesaj va afișa fiecare nume de oraș separat.

Exemplul nr. 3

VBA String Array cu funcție Split

Acum presupuneți că aveți nume de oraș precum cele de mai jos.

Bangalore; Mumbai; Kolkata; Hydrabad; Orissa

In this case, all the cities are combined together with the colon separating each city. In such cases, we need to use the SPLIT function to separate each city.

For Expression, supply the city list.

Code:

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

The next argument is “Delimiter,” i.e., what is the one character that is separating each city from other cities. In this case, “Colon.”

Code:

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

Acum, valorile împărțite ale funcției SPLIT determină și cea mai mare lungime a matricei.

Lucruri de amintit

  • LBOUND și UBOUND sunt funcții pentru a determina lungimile matricei.
  • Funcția ARRAY poate conține multe valori pentru o variabilă declarată.
  • Odată ce doriți să utilizați funcția ARRAY, nu decideți lungimea matricei.

Articole interesante...