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) Pabaiga 

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ų laukelį, 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.

Šį „VBA String Array Excel“ šabloną galite atsisiųsti čia - „VBA String Array Excel“ šablonas

1 pavyzdys

Kaip matėme aukščiau pateiktame kode, sužinojome, kad kintamajame galime laikyti daugiau nei vieną reikšmę 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 reikšmes naudodami VBA ARRAY funkciją.

Masyvo viduje perduokite reikšmes dvigubose kabutėse, atskirtose 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 naudojome ARRAY funkciją. 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 viso miestų sąrašo viename pranešimų laukelyje, turite įtraukti kilpas, apibrėžkite dar vieną kintamąjį kilpoms.

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

Atidarę 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 kilpos 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

Šiuo atveju visi miestai sujungiami kartu su dvitaškiu, skiriančiu kiekvieną miestą. Tokiais atvejais kiekvienam miestui atskirti turime naudoti funkciją SPLIT.

Expression“ pateikite miestų sąrašą.

Kodas:

 Sub String_Array_Example2 () Dim CityList () Kaip eilutė 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 

Kitas argumentas yra „Atribotuvas“, ty koks yra vienas simbolis, skiriantis kiekvieną miestą nuo kitų miestų, šiuo atveju - „Colon“.

Kodas:

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

Dabar SPLIT funkcijos 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.

$config[zx-auto] not found$config[zx-overlay] not found