VBA galite sukurti a Sąrašo dėžutė kur vartotojas gali pasirinkti vieną iš išvardytų parinkčių. Sąrašo dėžutė dažnai naudojama „Userforms“, bet taip pat gali būti naudojama darbalapyje. Šioje pamokoje sužinosite, kaip sukurti, užpildyti ir ištrinti sąrašų dėžutę. Taip pat pamatysite, kaip gauti vartotojo pasirinkimą VBA ir naudoti jį kodu.
Jei norite sužinoti, kaip sukurti „ComboBox“, spustelėkite čia: „VBA ComboBox“
Jei norite sužinoti, kaip sukurti žymimąjį laukelį, spustelėkite čia: VBA žymimasis laukelis
Sukurkite sąrašų dėžutę
Norėdami įterpti sąrašo laukelį į darbalapį, turite eiti į Skirtukas kūrėjas, spustelėkite Įdėti ir skiltyje „ActiveX“ valdikliai pasirinkite Sąrašo laukelis:
Vaizdas 1. Į darbalapį įterpkite sąrašo laukelį
Pasirinkę sąrašo dėžutę, kurią įterpėte, galite spustelėti Savybės po Skirtukas kūrėjas:
2 paveikslas. Keisti sąrašo ypatybes
Čia galite nustatyti skirtingas sąrašo ypatybes. Pradžiai mes pakeitėme atributą vardas į „lstListBox“. Dabar galime naudoti sąrašo dėžutę šiuo pavadinimu VBA kode.
Įveskite sąrašo dėžutę į VBA kodą
Pirma, turime užpildyti sąrašo lauką vertėmis. Daugeliu atvejų, atidarius darbaknygę, sąrašas turi būti užpildytas. Dėl to mes turime į objektą įtraukti „Listbox“ užpildymo kodą Darbo knyga, procedūra Atviras. Ši procedūra atliekama kiekvieną kartą, kai vartotojas atidaro darbaknygę. Čia yra kodas:
123456789 | Su „Sheet1.lstListBox“. Pridėti „Jonas“. Pridėti „Michaelas“.AddItem "Jennifer".AddItem "Lilly".AddItem "Robertas"Pabaiga su |
Kaip matote 3 paveiksle, savo sąrašo dėžutę užpildėme 5 vardais (John, Michael, Jennifer, Lilly ir Robert):
3 pav. Užpildykite sąrašo dėžutę VBA
Įrašykite sąrašo dėžutę iš ląstelių diapazono
Kitas galimas būdas užpildyti sąrašo dėžutę yra leisti vartotojui tai padaryti. Sąrašo dėžutė gali būti susieta su langelių diapazonu. Todėl kiekvieną kartą, kai vartotojas įveda naują langelių diapazono vertę, sąrašo dėžutė bus atnaujinta ta verte.
Jei norite tai įjungti, turite eiti į Savybės iš „ListBox“ ir nustatykite atributą ListFillRange:
4 paveikslas. Sąrašo laukelį užpildykite iš langelių diapazono
Sąrašo dėžutę susiejome su diapazonu E2: E5, kur įrašome norimus vardus (Nathanas, Harry, George'as, Roberta). Todėl dabar sąrašų dėžutė užpildyta šiais pavadinimais.
Gaukite pasirinktą sąrašo dėžutės elementą VBA
Sąrašo dėžutės tikslas yra suteikti vartotojams galimybę pasirinkti. Norėdami gauti naudotojo pasirinktą vertę, turite naudoti šį kodą:
123 | Dim strSelectedItem As VariantstrSelectedItem = Sheet1.lstListBox.Value |
Atribute yra vartotojo pasirinkimas Vertė apie Sheet1.lstListbox objektas. Ši vertė priskiriama kintamajam strSelectedItem:
Vaizdas 5. Gaukite pasirinktą vertę iš sąrašo dėžutės VBA
Mes pasirinkome Haris sąrašo laukelyje ir įvykdė procedūrą. Kaip matote 5 paveiksle, reikšmė strSelectedItem yra Haris, kurią pasirinkome. Be to, šį kintamąjį galite apdoroti kodu.
Išvalyti sąrašų dėžutę
Norėdami išvalyti sąrašo dėžutę VBA, turite naudoti Skaidrus metodas Sheet1.lstListBox objektas. Jis ištrins visus elementus iš sąrašo. Čia yra kodas:
1 | Sheet1.lstListBox.Clear |
Kai vykdome kodą, gauname tuščią sąrašo laukelį:
Vaizdas 6. Išvalyti sąrašo laukelį
Naudokite „Userbox“ sąrašų dėžutę
Kaip minėjome, „Listbox“ dažniausiai naudojamas „Userforms“. Norėdami paaiškinti, kaip tai padaryti, pirmiausia įterpsime „Userform“. VBA redaktoriuje dešiniuoju pelės mygtuku spustelėkite modulio pavadinimą, spustelėkite Įdėti ir pasirinkti UserForm:
7 paveikslėlis. Įterpkite vartotojo formą
Norėdami rodyti įterpimo valdiklius, turite įjungti Įrankių dėžė. Norėdami tai padaryti, spustelėkiteĮrankių dėžė piktogramą įrankių juostoje. Po to gausite langus su visais prieinamais valdikliais. Galite spustelėti „ListBox“ norėdami jį sukurti naudotojo formoje.
8 paveikslėlis. Įdėkite sąrašo dėžutę į vartotojo formą
Pavadinsime „ComboBox“ cmbComboBox. Norėdami jį užpildyti reikšmėmis, į metodą turime įtraukti šį kodą Inicijuoti nuo objekto UserForm:
12345678910111213 | Privatus antrinis vartotojasForm_Initialize ()Su UserForm1.lstListBox. Pridėti „Jonas“. Pridėti „Michaelas“.AddItem "Jennifer".AddItem "Lilly".AddItem "Robertas"Pabaiga suPabaiga Sub |
Šis kodas suaktyvinamas kiekvieną kartą, kai vartotojas paleidžia „Userform“ ir užpildo sąrašo lauką šiais 5 pavadinimais:
9 paveikslėlis. Sąrašo dėžutė su reikšmėmis vartotojo formoje
Jei norite gauti pasirinktą vertę iš „ComboBox“, turite naudoti tą pačią „Combobox“ darbalapyje logiką, kuri paaiškinta anksčiau straipsnyje.