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

Řetězcové pole aplikace Excel VBA

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

Podívejte se například 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 pole řetězců Excel VBA.

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 uvozovky, každý oddělené čá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, ne 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

VBA String Array with LBOUND & UBOUND Functions

In case if you don’t want to show all the city lists in a single message box, then you need to include loops, define one more variable for loops.

Now to include FOR NEXT loop, we are not sure how many times we need to run the code. In this case, we can decide it like 5 times, but that is not the right way to approach the problem. So how about the idea of auto lower and higher level array length identifier???

When we open FOR NEXT loop, we usually decide the loop length as 1 to 5 or 1 to 10 depending upon the situation. Instead of entering the numbers manually, let’s use LBOUND and UBOUND function to decide on the lower value and upper value automatically.

For LBound and Ubound, I have supplied an array name, i.e., CityList. VBA LBound identifies the lower value of the array variable, and VBA UBound function identifies the upper value of the array variable.

Now show the value in the message box, instead of inserting the serial number, let the loop variable “k” takes the array value automatically.

Code:

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

Now the message box will show each city name separately.

Example #3

VBA String Array with Split Function

Now assume you have city names like the below.

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

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.
  • Pokud chcete jednou použít funkci ARRAY, nerozhodujte o délce pole.

Zajímavé články...