Excel VBA karakterlánc tömb
A VBA-ban a String tömb nem más, mint egy tömb változó, amely egynél több string értéket is képes tárolni egyetlen változóval.
Nézze meg például az alábbi VBA kódot.
Kód:
Sub String_Array_Example () Dim CityList (1–5) 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
A fenti kódban deklaráltam tömb változónak, és egy tömb hosszát 1 és 5 közé osztottam.
Dim CityList (1–5) mint variáns
Ehhez a tömbváltozóhoz 5 városnevet rendeltem, amelyek mindegyik tömbszámot megemlítik a zárójelben.
CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa"
Ezután írtam egy kódot, amely megmutatja ezeket a városneveket az üzenetmezőben.
MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5)
Amikor futtatom ezt a kódot, kapunk egy üzenetdobozt, amely az összes városnevet egyetlen üzenetdobozban tartalmazza.
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__2.png.webp)
Mindannyian tudjuk, hogy ez annyi időt spórolt meg az ütemtervünkből, hogy megszüntettük az egyes városok egyedi változóinak deklarálását. Azonban még egy dolgot meg kell tanulnia, hogy továbbra is csökkenthetjük a karakterlánc-értékekhez írt sor kódját. Nézzük meg, hogyan írunk kódot a VBA string tömbökhöz.
Példák karakterlánc tömbre az Excel VBA-ban
Az alábbiakban bemutatjuk az excel VBA string tömb példáit.
1. példa
Amint a fenti kódban láthattuk, megtanultuk, hogy a meghatározott tömbméret alapján egynél több értéket is eltárolhatunk a változóban.
Most azt kell tennünk, hogy ne határozzuk meg jó előre a tömb hosszát.
Kód:
Sub String_Array_Példa1 () Dim CityList (), mint Variant End Sub
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__3.png.webp)
Mint fent látható a zárójelben, nem írtam hosszat. Ehhez a változóhoz illesszünk be értékeket a VBA ARRAY függvény használatával.
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__4.png.webp)
A tömbben adja meg az értékeket dupla idézőjelben, vesszővel elválasztva (,).
Kód:
Sub String_Array_Példa () Dim CityList () Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") End Sub
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__5.png.webp)
Most őrizze meg a régi kódot, hogy a városnevek eredménye megjelenjen a VBA üzenetmezőjében.
Kód:
Sub String_Array_Példa1 () Dim CityList () Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") MsgBox CityList (0) & "," & CityList (1) & " , "& CityList (2) &", "& CityList (3) &", "& CityList (4) End Sub
Az egyik változtatás, amelyet a fenti kódban hajtottam végre, az az, hogy nem döntöttünk egy tömb változó alsó és felső határáról, és az ARRAY függvényt használtuk a tömbök száma 0-tól kezdődik, nem pedig 1-től.
Ezért emlegettük az értékeket CityList (0), ClityList (1), CityList (2), CityList (3) és CityList (4).
Most futtassa a kódot az Excel F5 gyorsbillentyűjével vagy manuálisan. Ugyanazt az eredményt kapjuk, mint az előző kódból.
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba_.gif)
2. példa
VBA karakterlánc tömb LBOUND és UBOUND funkciókkal
Abban az esetben, ha nem akarja az összes városlistát egyetlen üzenetmezőben megjeleníteni, akkor hurokokat kell beillesztenie, meg kell határoznia még egy változót a hurkok számára.
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__6.png.webp)
A FOR NEXT ciklus felvétele érdekében nem vagyunk biztosak abban, hogy hányszor kell futtatnunk a kódot. Ebben az esetben úgy dönthetünk, mint ötször, de ez nem a helyes megközelítés a probléma megközelítéséhez. Tehát mi lenne az automatikus alacsonyabb és magasabb szintű tömbhossz-azonosító ötletével ???
Amikor kinyitjuk a KÖVETKEZŐ ciklust, a helyzet függvényében általában 1 - 5 vagy 1 - 10 közötti ciklust határozunk meg. A számok kézi beírása helyett használjuk az LBOUND és az UBOUND függvényeket az alsó és a felső érték automatikus meghatározásához.
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__7.png.webp)
Az LBound és az Ubound esetében megadtam egy tömb nevet, azaz a CityList-et. A VBA LBound a tömbváltozó alsó értékét, a VBA UBound függvény pedig a tömbváltozó felső értékét azonosítja.
Most mutassa meg az értéket az üzenetmezőben, ahelyett, hogy beillesztené a sorozatszámot, hagyja, hogy a „k” ciklusváltozó automatikusan átvegye a tömb értékét.
Kód:
Sub String_Array_Example1 () Dim CityList () változóként Dim k As Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") k = LBound (CityList) UBound (CityList) MsgBox CityList (k) Következő k End Sub
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__8.png.webp)
Az üzenetmezőben minden város neve külön-külön jelenik meg.
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__2.gif)
3. példa
VBA karakterlánc tömb osztott funkcióval
Most tegyük fel, hogy vannak olyan városneveid, mint az alábbiak.
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.
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__9.png.webp)
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
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__10.png.webp)
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
![](https://cdn.know-base.net/5567068/vba_string_array_how_to_declare_and_initialize_string_array_in_excel_vba__11.png.webp)
Most a SPLIT függvényfelosztás értékei határozzák meg a legmagasabb tömbhosszt is.
Dolgok, amikre emlékezni kell
- Az LBOUND és az UBOUND a tömbhosszak meghatározására szolgáló funkciók.
- Az ARRAY függvény sok értéket tartalmazhat egy deklarált változóhoz.
- Ha egyszer használni szeretné az ARRAY funkciót, ne döntse el a tömb hosszát.