VBA String Array - Как да декларирам и инициализирам низ от масиви в Excel VBA?

Съдържание

Excel VBA String Array

Във VBA масивът String не е нищо друго освен променлива на масив, която може да съдържа повече от една стойност на низ с една променлива.

Например погледнете кода по-долу VBA.

Код:

Sub String_Array_Example () Dim CityList (1 до 5) Като вариант 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

В горния код съм декларирал като променлива на масива и съм определил дължината на масив от 1 до 5.

Dim CityList (1 до 5) като вариант

За тази променлива на масива съм задал 5 имена на градове, споменаващи всеки брой масиви в скобите.

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)

Когато стартирам този код, ще получим поле за съобщение, което показва всички имена на градове в едно поле за съобщение.

Всички знаем, че това е спестило толкова много време от нашия график, като елиминира задачата за деклариране на отделни променливи за всеки град. Още нещо, което трябва да научите, е, че все още можем да намалим кода на реда, който пишем за низови стойности. Нека разгледаме как пишем код за масиви от низове на VBA.

Примери за String Array в Excel VBA

По-долу са примерите за масив от низове на Excel VBA.

Пример # 1

Както видяхме в горния код, научихме, че можем да съхраняваме повече от една стойност в променливата въз основа на определения размер на масива.

Сега това, което трябва да направим, е да не решаваме дължината на масива предварително.

Код:

Sub String_Array_Example1 () Dim CityList () Като вариант Край Sub

Както можете да видите по-горе в скобите, не съм написал никакви дължини. Сега за тази променлива, нека да вмъкнем стойности с помощта на функцията VBA ARRAY.

Вътре в масива се предават стойностите на двойни кавички, всяка отделена със запетая (,).

Код:

Sub String_Array_Example () Dim CityList () Като вариант CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") End Sub

Сега запазете стария код, за да покажете резултата от имената на градове в полето за съобщения във VBA.

Код:

Sub String_Array_Example1 () Dim CityList () Като вариант CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") MsgBox CityList (0) & "," & CityList (1) & " , "& CityList (2) &", "& CityList (3) &", "& CityList (4) End Sub

Една промяна, която направих в горния код, е, че не сме решили долната граница и горната граница на променлива на масив и сме използвали функцията ARRAY. Броят на масивите ще започне от 0, а не от 1.

И така, това е причината да споменем стойностите като CityList (0), ClityList (1), CityList (2), CityList (3) и CityList (4).

Сега стартирайте кода чрез клавиш за бърз достъп на Excel F5 или ръчно. Получаваме същия резултат като предишния код.

Пример # 2

VBA String Array с функции LBOUND & UBOUND

В случай, че не искате да показвате всички списъци с градове в едно поле за съобщение, тогава трябва да включите цикли, дефинирайте още една променлива за цикли.

Сега, за да включим цикъл FOR NEXT, не сме сигурни колко пъти трябва да стартираме кода. В този случай можем да го решим около 5 пъти, но това не е правилният начин за подход към проблема. Е, какво ще кажете за идеята за автоматичен идентификатор на дължина на масива от по-ниско и по-високо ниво ???

Когато отваряме цикъл FOR NEXT, обикновено определяме дължината на цикъла като 1 до 5 или 1 до 10 в зависимост от ситуацията. Вместо да въвеждаме числата ръчно, нека използваме функцията LBOUND и UBOUND, за да решим автоматично долната и горната стойност.

За LBound и Ubound съм предоставил име на масив, т.е. CityList. VBA LBound идентифицира долната стойност на променливата на масива, а функцията VBA UBound идентифицира горната стойност на променливата на масива.

Сега покажете стойността в полето за съобщение, вместо да вмъквате серийния номер, оставете цикличната променлива „k“ да приема стойността на масива автоматично.

Код:

Sub String_Array_Example1 () Dim CityList () Като вариант Dim k As Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") За k = LBound (CityList) To UBound (CityList) MsgBox CityList (k) Следващ k Край Под

Сега полето за съобщения ще показва името на всеки град поотделно.

Пример # 3

VBA String Array с функция Split

А сега приемете, че имате имена на градове като долу.

Бангалор; Мумбай; Колката; Хидрабад; Ориса

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

Сега стойностите на разделяне на функцията SPLIT също определят най-голямата дължина на масива.

Неща за запомняне

  • LBOUND и UBOUND са функции за определяне на дължините на масива.
  • Функцията ARRAY може да съдържа много стойности за декларирана променлива.
  • Веднъж, ако искате да използвате функцията ARRAY, не решавайте дължината на масива.

Интересни статии...