VBA stringide massiiv - Kuidas deklareerida ja vormindada stringide massiiv Exceli VBA-s?

Lang L: none (table-of-contents)

Exceli VBA stringide massiiv

VBA-s pole stringimassiiv muud kui massiivimuutuja, mis mahutab ühe muutujaga rohkem kui ühe stringi väärtuse.

Näiteks vaadake allpool olevat VBA-koodi.

Kood:

Alamstring_Array_Näide () Dim CityList (1 kuni 5) Variant CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissaare" MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5) End Sub

Ülaltoodud koodis olen deklareerinud massiivi muutujana ja määranud massiivi pikkuseks 1 kuni 5.

Hämardada CityList (1 kuni 5) variandina

Selle massiivimuutuja jaoks olen määranud 5 linnanime, mainides sulgudes iga massiivide arvu.

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

Järgmisena olen kirjutanud koodi nende linnanimede kuvamiseks sõnumikasti.

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

Kui ma selle koodi käivitan, saame teate kasti, mis näitab kõiki linnanimesid ühes sõnumikastis.

Me kõik teame, et see on meie ajakavast nii palju aega kokku hoidnud, kui kaotame ülesande deklareerida iga linna individuaalsed muutujad. Kuid veel üks asi, mida peate õppima, on see, et stringi väärtuste jaoks kirjutatava rea ​​koodi saame siiski vähendada. Vaatame, kuidas kirjutame VBA stringimassiividele koodi.

Stringimassiivi näited Exceli VBA-s

Allpool on toodud Exceli VBA stringimassiivi näited.

Näide 1

Nagu ülaltoodud koodist nägime, saime teada, et saame määratud massiivi suuruse põhjal muutujasse salvestada rohkem kui ühe väärtuse.

Nüüd peame mitte massiivi pikkust aegsasti otsustama.

Kood:

Alamstring_Array_Näide1 () Dim CityList () Variant End Sub

Nagu sulude sees ülal näete, pole ma ühtegi pikkust kirjutanud. Nüüd lisame selle muutuja jaoks väärtused, kasutades funktsiooni VBA ARRAY.

Massiivi sees edastage väärtused topelt jutumärkides, millest igaüks eraldatakse komaga (,).

Kood:

Alamstring_Array_Example () Dim CityList () Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") Lõpp-alam

Hoidke nüüd vana kood, et näidata linnanimede tulemust VBA teatekastis.

Kood:

Alamstring_Array_Näide1 () Dim CityList () Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") MsgBox CityList (0) & "," & CityList (1) & " , "& CityList (2) &", "& CityList (3) &", "& CityList (4) End Sub

Üks ülaltoodud koodis tehtud muutus on, kuna me ei ole otsustanud massiivi muutuja alumist ja ülemist piiri ning oleme kasutanud funktsiooni ARRAY massiivide arv algab 0-st, mitte 1-st.

Nii et seetõttu oleme maininud väärtusi CityList (0), ClityList (1), CityList (2), CityList (3) ja CityList (4).

Nüüd käivitage kood Exceli kiirklahvi F5 kaudu või käsitsi. Saame sama tulemuse nagu eelmisest koodist.

Näide 2

VBA stringide massiiv funktsioonidega LBOUND ja UBOUND

Kui te ei soovi kõiki linnaloendeid kuvada ühes sõnumikastis, peate lisama tsüklid, määrama silmuste jaoks veel ühe muutuja.

Nüüd, et lisada FOR NEXT tsükkel, pole me kindel, mitu korda peame koodi käivitama. Sel juhul võime seda otsustada nagu viis korda, kuid see pole õige viis probleemile läheneda. Kuidas oleks siis idee massiivi automaatse madalama ja kõrgema taseme identifikaatoriga ???

Järgmise silmuse avamisel otsustame silmusepikkuseks tavaliselt 1 kuni 5 või 1 kuni 10, sõltuvalt olukorrast. Numbrite käsitsi sisestamise asemel kasutame funktsiooni LBOUND ja UBOUND, et otsustada madalam ja ülemine väärtus automaatselt.

LBoundi ja Uboundi jaoks olen esitanud massiivi nime, st CityList. VBA LBound tuvastab massiivi muutuja alumise väärtuse ja funktsioon VBA UBound massiivi muutuja ülemise väärtuse.

Näidake nüüd väärtust sõnumikastis, seerianumbri sisestamise asemel laske silmusmuutujal „k” massiiviväärtus automaatselt võtta.

Kood:

Alamstring_Array_Näide1 () Dim CityList () Variandina Dim k As Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") k = LBound (CityList) kuni UBound (CityList) MsgBox CityList (k) Järgmine k End Sub

Nüüd kuvatakse sõnumikastis iga linna nimi eraldi.

Näide # 3

Split funktsiooniga VBA stringide massiiv

Oletame, et teil on alljärgnevad linnanimed.

Bangalore; Mumbai; Kolkata; Hydrabad; Orissa

Sellisel juhul on kõik linnad ühendatud iga linna eraldava jämesoolega. Sellistel juhtudel peame iga linna eraldamiseks kasutama funktsiooni SPLIT.

Expressioni jaoks sisestage linnade loend.

Kood:

Alamstring_Array_Näide2 () Dim CityList () stringina Dim k As Integer CityList = Split ("Bangalore; Mumbai; Kolkata; Hydrabad; Orissa", k = LBound (CityList) kuni UBound (CityList) MsgBox CityList (k) Järgmine k lõpp Alam

Järgmine argument on „eraldaja”, st see, mis on üks märk, mis eraldab iga linna teistest linnadest. Sel juhul "Colon".

Kood:

Alamstring_Array_Näide2 () Dim CityList () stringina Dim k As Integer CityList = Split ("Bangalore; Mumbai; Kolkata; Hydrabad; Orissa", ";") k = LBound (CityList) UBound (CityList) MsgBox CityList (k ) Järgmine k End Sub

Nüüd määravad SPLIT-funktsiooni jagatud väärtused ka massiivi suurima pikkuse.

Asjad, mida meeles pidada

  • LBOUND ja UBOUND on funktsioonid massiivi pikkuste määramiseks.
  • Funktsioon ARRAY mahutab deklareeritud muutuja jaoks palju väärtusi.
  • Kui soovite kasutada funktsiooni ARRAY, ärge otsustage massiivi pikkust.

Huvitavad Artiklid...