VBA String Array | Paano Ipahayag at Pasimulan ang String Array sa Excel VBA?

Excel VBA String Array

Sa VBA, ang String array ay walang anuman kundi isang variable ng array na maaaring humawak ng higit sa isang halaga ng string na may isang solong variable.

Para sa isang halimbawa tingnan ang sa ibaba VBA code.

Code:

 Sub String_Array_Example () Dim CityList (1 To 5) Bilang 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 

Sa code sa itaas, ipinahayag ko bilang variable ng array at itinalaga ang haba ng isang array bilang 1 hanggang 5.

 Dim CityList (1 To 5) Bilang Variant 

Para sa variable na ito ng array, nagtalaga ako ng 5 mga pangalan ng lungsod na binabanggit ang bawat bilang ng array sa panaklong.

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

Susunod, nagsulat ako ng isang code upang maipakita ang mga pangalan ng lungsod sa kahon ng mensahe.

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

Kapag pinatakbo ko ang code na ito makakakuha kami ng isang kahon ng mensahe na nagpapakita ng lahat ng mga pangalan ng lungsod sa isang solong kahon ng mensahe.

Alam nating lahat na nai-save ito ng maraming oras mula sa aming iskedyul sa pamamagitan ng pag-aalis ng gawain ng pagdedeklara ng mga indibidwal na variable para sa bawat lungsod. Gayunpaman, isa pang bagay na kailangan mong malaman ay maaari pa rin nating mabawasan ang code ng linya na sinusulat namin para sa mga halaga ng string. Tingnan natin kung paano tayo nagsusulat ng code para sa mga arrays ng string ng VBA.

Mga halimbawa ng String Array sa Excel VBA

Nasa ibaba ang mga halimbawa ng isang excel vba string array.

Maaari mong i-download ang Template ng VBA String Array Excel dito - VBA String Array Excel Template

Halimbawa # 1

Tulad ng nakita natin sa code sa itaas natutunan namin na maaaring mag-imbak ng higit sa isang halaga sa variable batay sa tinukoy na laki ng array.

Ngayon kung ano ang kailangan nating gawin ay huwag magpasya ng haba ng array nang maaga.

Code:

 Sub String_Array_Example1 () Dim CityList () Bilang Variant End Sub 

Tulad ng nakikita mo sa itaas sa loob ng panaklong hindi ako nakasulat ng anumang haba. Ngayon para sa variable na ito magsingit tayo ng mga halaga sa pamamagitan ng paggamit ng VBA ARRAY function.

Sa loob ng Array ipasa ang mga halaga sa mga dobleng quote bawat pinaghihiwalay ng isang kuwit (,).

Code:

 Sub String_Array_Example () Dim CityList () Bilang Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") End Sub 

Panatilihin ngayon ang lumang code upang maipakita ang resulta ng mga pangalan ng lungsod sa kahon ng mensahe sa VBA.

Code:

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

Ang isang pagbabago na ginawa ko sa code sa itaas ay dahil hindi namin napagpasyahan ang mas mababang limitasyon at itaas na limitasyon ng isang variable ng array at ginamit namin ang bilang ng pag-andar ng ARRAY function ay magsisimula mula sa 0 hindi mula sa 1.

Kaya, iyon ang dahilan na nabanggit namin ang mga halaga bilang CityList (0), ClityList (1), CityList (2), CityList (3), at CityList (4).

Patakbuhin ngayon ang code sa pamamagitan ng excel shortcut key F5 o manu-mano, nakukuha namin ang parehong resulta habang nakukuha namin mula sa nakaraang code.

Halimbawa # 2

VBA String Array kasama ang LBOUND & UBOUND Function

Kung sakaling kung hindi mo nais na ipakita ang lahat ng listahan ng lungsod sa iisang kahon ng mensahe, kakailanganin mong isama ang mga loop, tukuyin ang isa pang variable para sa mga loop.

Ngayon upang maisama PARA SA SUSUNOD na loop hindi kami sigurado kung gaano karaming beses na kailangan namin upang patakbuhin ang code, sa kasong ito, maaari naming magpasya ito tulad ng 5 beses ngunit hindi iyon ang tamang paraan upang lapitan ang problema. Kaya paano ang tungkol sa ideya ng auto na mas mababa at mas mataas na antas ng pagkakakilanlan ng array ???

Kapag binuksan namin PARA SA SUSUNOD na loop madalas naming magpasya ang haba ng loop bilang 1 hanggang 5 o 1 hanggang 10 depende sa sitwasyon. Sa halip na ipasok nang manu-mano ang mga numero gamitin natin ang LBOUND at UBOUND function upang magpasya sa mas mababang halaga at itaas na halaga awtomatiko.

Para sa LBound at Ubound nag-supply ako ng pangalan ng array ie CityList. Kinikilala ng VBA LBound ang mas mababang halaga ng variable ng array at kinikilala ng pagpapaandar ng VBA UBound ang itaas na halaga ng variable ng array.

Ipakita ngayon ang halaga sa kahon ng mensahe, sa halip na ipasok ang serial number hayaan ang variable na loop na "k" awtomatikong kukuha ng halaga ng array.

Code:

 Sub String_Array_Example1 () Dim CityList () Bilang Variant Dim k Bilang Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") Para sa k = LBound (CityList) To UBound (CityList) MsgBox CityList (k) Susunod k End Sub 

Ngayon ang kahon ng mensahe ay ipapakita nang hiwalay ang bawat pangalan ng lungsod.

Halimbawa # 3

VBA String Array na may Split Function

Ipagpalagay ngayon na mayroon kang mga pangalan ng lungsod tulad ng nasa ibaba.

Bangalore; Mumbai; Kolkata; Hydrabad; Orissa

Sa kasong ito, ang lahat ng mga lungsod ay pinagsama kasama ang colon na pinaghihiwalay ang bawat lungsod. Sa mga ganitong kaso, kailangan nating gamitin ang pagpapaandar ng SPLIT upang paghiwalayin ang bawat lungsod.

Para kay Pagpapahayag ibigay ang listahan ng lungsod.

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) Susunod na K End Sub 

Susunod na argumento ay "Delimiter" ibig sabihin kung ano ang isang character na naghihiwalay sa bawat lungsod mula sa iba pang mga lungsod, sa kasong ito, "Colon".

Code:

 Sub String_Array_Example2 () Dim CityList () Bilang String Dim k Bilang Integer CityList = Split ("Bangalore; Mumbai; Kolkata; Hydrabad; Orissa", ";") Para sa k = LBound (CityList) To UBound (CityList) MsgBox CityList (k ) Susunod k End Sub 

Ngayon ang halaga ng split function na SPLIT ay tumutukoy din sa pinakamataas na haba ng array.

Bagay na dapat alalahanin

  • Ang LBOUND at UBOUND ay mga pagpapaandar upang matukoy ang haba ng array.
  • Ang function na ARRAY ay maaaring humawak ng maraming mga halaga para sa isang idineklarang variable.
  • Minsan kung nais mong gamitin ang ARRAY function huwag magpasya ang haba ng array.