VBA styginių masyvas - Kaip deklaruoti ir inicializuoti eilučių masyvą „Excel VBA“?

„Excel VBA“ styginių masyvas

VBA String masyvas yra ne kas kita, o masyvo kintamasis, kuriame gali būti daugiau nei viena eilutės reikšmė su vienu kintamuoju.

Pavyzdžiui, pažvelkite į žemiau esantį VBA kodą.

Kodas:

Sub String_Array_Example () Dim CityList (1–5) Kaip variantas 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) pabaigos dalis

Ankstesniame kode aš deklaravau kaip masyvo kintamąjį ir priskyriau masyvo ilgį nuo 1 iki 5.

„Dim CityList“ (nuo 1 iki 5) kaip variantas

Šiam masyvo kintamajam aš priskyriau 5 miestų pavadinimus, kuriuose skliaustuose nurodomas kiekvienas masyvų skaičius.

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

Tada aš parašiau kodą, kad šie miestų pavadinimai būtų rodomi pranešimų laukelyje.

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

Kai paleisiu šį kodą, gausime pranešimų langelį, kuriame visi miestų pavadinimai rodomi viename pranešimų laukelyje.

Mes visi žinome, kad tai sutaupė tiek daug laiko nuo mūsų tvarkaraščio, panaikinant užduotį deklaruoti atskirus kiekvieno miesto kintamuosius. Tačiau reikia išmokti dar vieną dalyką: mes vis tiek galime sumažinti eilutės, kurią rašome eilutės reikšmėms, kodą. Pažvelkime, kaip rašome VBA eilutės masyvų kodą.

Styginių masyvo „Excel VBA“ pavyzdžiai

Žemiau pateikiami „Excel“ VBA eilutės masyvo pavyzdžiai.

1 pavyzdys

Kaip matėme aukščiau pateiktame kode, sužinojome, kad kintamajame galime laikyti daugiau nei vieną vertę pagal nustatytą masyvo dydį.

Dabar turime iš anksto nenuspręsti masyvo ilgio.

Kodas:

Sub String_Array_Example1 () Dim CityList () Kaip variantas End Sub

Kaip matote aukščiau skliausteliuose, aš neparašiau jokių ilgių. Dabar šiam kintamajam įterpkime vertes naudodami funkciją VBA ARRAY.

Masyvo viduje perduokite reikšmes dvigubose kabutėse, kurias kiekvienas skiria kableliu (,).

Kodas:

Sub String_Array_Example () Dim CityList () Kaip variantas CityList = Array („Bangalore“, „Mumbai“, „Kolkata“, „Hyderabad“, „Orissa“) Pabaiga Sub

Dabar išsaugokite seną kodą, kad miesto pavadinimų rezultatas būtų rodomas VBA pranešimų laukelyje.

Kodas:

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

Vienas pakeitimas, kurį atlikau aukščiau pateiktame kode, yra tai, kad mes nenusprendėme apatinės ir viršutinės masyvo kintamojo ribos, ir mes panaudojome ARRAY funkcijos masyvų skaičius prasidės nuo 0, o ne nuo 1.

Taigi, todėl mes paminėjome vertes kaip „ CityList“ (0), „ClityList“ (1), „CityList“ (2), „CityList“ (3) ir „CityList“ (4).

Dabar paleiskite kodą naudodami „Excel“ spartųjį klavišą F5 arba rankiniu būdu. Gauname tą patį rezultatą kaip ir iš ankstesnio kodo.

2 pavyzdys

VBA styginių masyvas su LBOUND ir UBOUND funkcijomis

Jei nenorite rodyti visų miestų sąrašų viename pranešimų laukelyje, turite įtraukti kilpas, apibrėžti dar vieną kintamąjį kilpoms.

Dabar įtraukdami FOR NEXT kilpą, mes nesame tikri, kiek kartų turime paleisti kodą. Šiuo atveju mes galime tai nuspręsti kaip 5 kartus, tačiau tai nėra teisingas būdas spręsti problemą. Taigi kaip apie automatinio žemesnio ir aukštesnio lygio masyvo ilgio identifikatoriaus idėją ???

Atidarę FOR NEXT kilpą, mes paprastai nusprendžiame ciklo ilgį nuo 1 iki 5 arba nuo 1 iki 10, priklausomai nuo situacijos. Užuot įvedę skaičius rankiniu būdu, naudokime „LBOUND“ ir „UBOUND“ funkcijomis, kad automatiškai nustatytume apatinę ir viršutinę vertes.

„LBound“ ir „Ubound“ pateikiau masyvo pavadinimą, ty „CityList“. VBA LBound identifikuoja apatinę masyvo kintamojo vertę, o funkcija VBA UBound - viršutinę masyvo kintamojo vertę.

Dabar parodykite vertę pranešimo laukelyje, užuot įvedę serijos numerį, leiskite, kad ciklo kintamasis „k“ automatiškai paimtų masyvo vertę.

Kodas:

Sub String_Array_Pavyzdys1 () Dim CityList () Kaip variantas Dim k As Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") k = LBound (CityList) į UBound (CityList) „MsgBox CityList“ (k) Kitas k End Sub

Dabar pranešimų laukelyje kiekvieno miesto pavadinimas bus rodomas atskirai.

3 pavyzdys

VBA styginių masyvas su padalyta funkcija

Dabar tarkime, kad turite tokius miestų pavadinimus, kaip nurodyta toliau.

Bangalore; Mumbajuje; Kolkata; Hidrabade; Orisoje

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

Dabar funkcijos SPLIT padalijimo vertės taip pat nustato didžiausią masyvo ilgį.

Ką reikia atsiminti

  • LBOUND ir UBOUND yra funkcijos, nustatančios masyvo ilgius.
  • ARRAY funkcija gali turėti daug deklaruoto kintamojo reikšmių.
  • Kartą, jei norite naudoti ARRAY funkciją, nenuspręskite masyvo ilgio.

Įdomios straipsniai...