Řetězec VBA | Jak deklarovat a inicializovat pole řetězců v aplikaci Excel VBA?

Řetězcové pole aplikace Excel VBA

Ve VBA není String array nic jiného než proměnná pole, která může obsahovat více než jednu hodnotu řetězce s jednou proměnnou.

Například se podívejte na níže uvedený kód VBA.

Kód:

 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 

Ve výše uvedeném kódu jsem deklaroval jako proměnnou pole a přidělil délku pole jako 1 až 5.

 Dim CityList (1 až 5) jako varianta 

Pro tuto proměnnou pole jsem přiřadil 5 názvů měst, které zmiňují každý počet polí v závorkách.

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

Dále jsem napsal kód pro zobrazení těchto názvů měst ve zprávě.

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

Když spustím tento kód, dostaneme okno se zprávou, které zobrazuje všechny názvy měst v jedné schránce.

Všichni víme, že to ušetřilo tolik času z našeho plánu odstraněním úkolu deklarovat jednotlivé proměnné pro každé město. Ještě jedna věc, kterou se musíte naučit, je, že stále můžeme snížit kód řádku, který píšeme pro hodnoty řetězce. Pojďme se podívat na to, jak píšeme kód pro pole řetězců VBA.

Příklady pole řetězců v aplikaci Excel VBA

Níže jsou uvedeny příklady řetězcového pole aplikace Excel VBA.

Tuto šablonu VBA String Array Excel si můžete stáhnout zde - Šablona VBA String Array Excel

Příklad č. 1

Jak jsme viděli ve výše uvedeném kódu, zjistili jsme, že do proměnné můžeme uložit více než jednu hodnotu na základě určené velikosti pole.

Nyní musíme nerozhodnout o délce pole v dostatečném předstihu.

Kód:

 Sub String_Array_Example1 () Dim CityList () jako koncový díl varianty 

Jak vidíte výše v závorkách, nenapsal jsem žádné délky. Nyní pro tuto proměnnou vložme hodnoty pomocí funkce VBA ARRAY.

Uvnitř pole předejte hodnoty na uvozovkách oddělených čárkou (,).

Kód:

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

Nyní si ponechejte starý kód, který zobrazí výsledek názvů měst ve schránce zpráv ve VBA.

Kód:

 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 

Jednou změnou, kterou jsem provedl ve výše uvedeném kódu, je to, že jsme se nerozhodli o dolní a horní hranici proměnné pole a použili jsme počet polí funkce ARRAY od 0, nikoli od 1.

To je důvod, proč jsme zmínili hodnoty jako CityList (0), ClityList (1), CityList (2), CityList (3) a CityList (4).

Nyní spusťte kód pomocí klávesové zkratky aplikace Excel F5 nebo ručně, získáme stejný výsledek jako z předchozího kódu.

Příklad č. 2

Řetězec VBA s funkcemi LBOUND a UBOUND

V případě, že nechcete zobrazit celý seznam měst v jedné schránce, musíte zahrnout smyčky, definujte ještě jednu proměnnou pro smyčky.

Nyní, abychom zahrnovali smyčku FOR NEXT, si nejsme jisti, kolikrát musíme spustit kód, v tomto případě se můžeme rozhodnout jako 5krát, ale to není správný způsob, jak přistupovat k problému. A co takhle myšlenka automatického identifikátoru délky pole na nižší a vyšší úrovni ???

Když otevíráme smyčku FOR NEXT, obvykle rozhodujeme o délce smyčky 1 až 5 nebo 1 až 10 v závislosti na situaci. Místo ručního zadávání čísel použijeme funkci LBOUND a UBOUND k automatickému rozhodování o dolní a horní hodnotě.

Pro LBound a Ubound jsem zadal název pole, tj. CityList. VBA LBound identifikuje spodní hodnotu proměnné pole a funkce VBA UBound identifikuje horní hodnotu proměnné pole.

Nyní zobrazte hodnotu v okně se zprávou, namísto vložení sériového čísla nechte proměnnou smyčky „k“ automaticky převzít hodnotu pole.

Kód:

 Sub String_Array_Example1 () Dim CityList () As Variant Dim k As Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") Pro k = LBound (CityList) To UBound (CityList) MsgBox CityList (k) Další k Konec Sub 

Okno se zprávou nyní zobrazí název každého města samostatně.

Příklad č. 3

Řetězec VBA s funkcí Split

Nyní předpokládejme, že máte názvy měst jako níže.

Bangalore; Bombaj; Kalkata; Hydrabad; Orissa

V tomto případě jsou všechna města kombinována s dvojtečkou oddělující každé město. V takových případech musíme k oddělení každého města použít funkci SPLIT.

Pro výraz uveďte seznam měst.

Kód:

 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) Další k Konec Sub 

Dalším argumentem je „Oddělovač“, tj. Jaký je jeden znak, který odděluje každé město od ostatních měst, v tomto případě „Dvojtečka“.

Kód:

 Sub String_Array_Example2 () Dim CityList () As String Dim k As Integer CityList = Split ("Bangalore; Mumbai; Kolkata; Hydrabad; Orissa", ";") Pro k = LBound (CityList) To UBound (CityList) MsgBox CityList (k ) Další k Konec Sub 

Nyní hodnoty rozdělení funkce SPLIT také určují nejvyšší délku pole.

Věci k zapamatování

  • LBOUND a UBOUND jsou funkce k určení délek pole.
  • Funkce ARRAY může obsahovat mnoho hodnot pro deklarovanou proměnnou.
  • Jednou, pokud chcete použít funkci ARRAY, nerozhodujte o délce pole.