Šiame straipsnyje bus parodyta, kaip dirbti su pasirinktu elementu „Excel VBA“ sąrašo laukelyje.
Sąrašų langeliai dažniausiai naudojami VBA formose, bet taip pat gali būti naudojami „Excel“ darbalapyje. Juose vartotojams rodomas parinkčių sąrašas, kurį vartotojas gali pasirinkti vieną ar daugiau.
Sąrašo laukelio kūrimas VBA formoje
Norėdami sukurti sąrašo laukelį VBA formoje, pirmiausia turime sukurti „UserForm“.
Sukūrę formą, įrankių juostoje pasirinkite sąrašo laukelio valdiklį ir vilkite, kad formoje sukurtumėte sąrašo laukelį.
Vertių pridėjimas prie sąrašo laukelio
Formos įvykyje Inicijuoti įveskite šį kodą. Sąrašo laukelis pasiims reikšmes, kurios yra saugomos „Excel“ darbalapio ląstelių diapazone.
123456 | Privatus antrinis vartotojasForm_Initialize ()Dim rng As RangeKiekvienam diapazonui („A1: A50“)Me.lstState.AddItem rng.ValueKitas rngPabaiga Sub |
Kai vykdysime formą, sąrašo laukelis bus parodytas, kaip parodyta paveikslėlyje žemiau:
Vertybių pasirinkimas iš sąrašo laukelio
Pagal numatytuosius nustatymus vieną reikšmę galima pasirinkti vartotojo formos sąrašo laukelyje. Tačiau tai galima pakeisti pakeičiant sąrašo laukelio ypatybę „Multi-Select“.
Spustelėkite sąrašo laukelį, kad jį pasirinktumėte, tada lange Ypatybės pakeiskite kelių pasirinkimų ypatybę iš 0-frmMultiSelectSingle į 1-frmMultiSelectMulti.
Dabar, kai vykdome formą, sąrašo laukelyje galime pasirinkti daugiau nei vieną parinktį.
Jei pakeisime variantą būti 2-frmMultiSelectExtended, tai reiškia, kad galime pasirinkti vieną iš verčių ir tada laikydami nuspaudę klavišą SHIFT, pasirinkite kitą vertę žemiau sąrašo, taip pat bus pasirinkti visi elementai tarp 2 pasirinktų verčių.
VBA programavimas | Kodo generatorius jums tinka!
Darbas su pasirinktomis vertybėmis VBA
Atsižvelgiant į parinkties tipą, kurį naudojome „Multi-Select“ ypatybei sąrašo laukelyje, yra keletas būdų, kaip galime naudoti vertę ar reikšmes, pasirinktas sąrašo laukelyje VBA kode.
Vertės priskyrimas kintamajam
Mes galime naudoti After_Update sąrašo laukelio įvykį, kad pasirinktai vertei priskirtumėte kintamąjį.
Pirma, formos modulio viršuje sukursime modulio lygio kintamąjį.
Po žodžiais, Pasirinkimas aiškus, sukurkite šį eilutės kintamąjį.
1 | Pritemdyti strState kaip eilutę. |
Sukūrę šį kintamąjį, galime dukart spustelėti laukelį Sąrašas, kad pereitumėte prie formos, esančios už formos, arba spustelėti kodo mygtuką VBE redaktoriuje.
Sąrašo laukelio paspaudimo įvykis bus sukurtas automatiškai. Pasirinkite After_Update Įvykio forma pateikiamas galimų procedūrų sąrašas.
Įvykyje „After_Update“ įveskite šį kodą:
123 | Privatus subststate_AfterUpdate ()strState = Me.lstStatePabaiga Sub |
PASTABA: Paspaudimo įvykį galite ištrinti, nes jis nėra būtinas.
Dabar, jei paleisime formą ir spustelėsime sąrašo laukelį, pasirinkta vertė bus saugoma kintamajame. Norėdami tai patikrinti, į kodą galime įterpti tašką BREAK.
Dabar, kai vykdome formą, spustelėję sąrašo laukelį, kodas pereis į DEBUG režimą ir sustos mūsų lūžio vietoje. Jei paspausime klaviatūros klavišą F8, norėdami pereiti žingsnį toliau kodu, kintamasis bus užpildytas pasirinktu elementu sąraše.
Šią vertę galime pamatyti padėję pelę ant kintamojo.
ARBA
Vertę galime pamatyti iš karto esančiame lange.
Pavargote ieškoti VBA kodo pavyzdžių? Išbandykite „AutoMacro“!
Komandos mygtuko naudojimas norint grąžinti vertę į „Excel“
Pirma, formoje sukuriame komandos mygtuką, kad būtų mygtukas OK, kad sąrašo laukelyje pasirinkta vertė būtų grąžinta „Excel“.
Pasirinkite komandų mygtuko valdiklį, tada spustelėkite ir vilkite savo formą, kad sukurtumėte mygtuką.
Lange Ypatybės pakeiskite mygtuko pavadinimą į cmdOKir pakeiskite mygtuko antraštę ir greitintuvą.
„Accelerator“ tikslas yra, kad vartotojas šiuo atveju naudotų klaviatūrą mygtukui suaktyvinti Alt+O. suaktyvintų mygtuką.
Kad komandų mygtukas veiktų, už jo turime pridėti kodą, kad spustelėjus mygtuką, kodas būtų paleistas. Tai vadinama mygtuko paspaudimo įvykiu.
Norėdami patekti į paspaudimo įvykį, formos dizaino rodinyje dukart spustelėkite mygtuką. Paspaudimo įvykis bus sukurtas automatiškai, nes šis įvykis dažniausiai naudojamas komandų mygtukams.
Įveskite šį kodą į komandos mygtuko paspaudimo įvykį.
123 | Privatus antrinis cmdOK_Click ()Diapazonas ("E1") = strStatePabaiga Sub |
Kodas pasiims kintamąjį, kurį deklaravome „ListBox“ įvykyje „After_Update“, ir grąžins vertę į „Excel“ diapazoną.
Arba galime pasiimti vertę tiesiai iš sąrašo laukelio, nenaudodami kintamojo.
123 | Privatus antrinis cmdOK_Click ()Diapazonas ("E1") = me.lstStatePabaiga Sub |
Kai vykdome formą, pasirinkta vertė bus grąžinta į „Excel“, kai spustelėsime mygtuką Gerai.
Kelių verčių pasirinkimas
Jei mes nustatėme sąrašo langelio kelių pasirinkimų ypatybę į 1 arba 2, kuri leidžia mums pasirinkti kelias sąrašo vertes, tada šių reikšmių pasirinkimo kodas yra šiek tiek kitoks.
The After_Update įvykis nebebus suaktyvinamas pasirinkus reikšmes sąrašo laukelyje - todėl negalime naudoti šio įvykio.
Mes vis dar galime naudoti komandų mygtuko paspaudimo įvykį, tačiau norėdami grąžinti jas į „Excel“, turime peržiūrėti sąrašo laukelyje pasirinktas reikšmes.
Komandos mygtuke Spustelėkite įvykį, įveskite šį kodą.
12345678910 | Privatus antrinis cmdOK_Click ()Dim x As IntegerDiapazonas („E1“). PasirinkiteX = 0 Man.lstState.ListCount - 1Jei Me.lstState.Selected (x) = Tiesa tadaActiveCell = Me.lstState.List (x)„ActiveCell. Offset“ (1, 0). PasirinkitePabaiga JeiKitas xPabaiga Sub |
Dabar, kai vykdome formą, tik pasirinktos vertės bus grąžintos į „Excel“ lapą.