Vo VBA môžete vytvoriť súbor Listbox kde si používateľ môže vybrať jednu z uvedených možností. Listbox sa často používa v užívateľských formulároch, ale môže sa použiť aj v pracovnom hárku. V tomto návode sa naučíte vytvárať, vyplňovať a odstraňovať zoznamy. Tiež uvidíte, ako získať vo VBA užívateľskú voľbu a použiť ju v kóde.
Ak sa chcete dozvedieť, ako vytvoriť ComboBox, kliknite sem: ComboBox VBA
Ak sa chcete dozvedieť, ako vytvoriť začiarkavacie políčko, kliknite sem: Začiarkavacie políčko VBA
Vytvorte si zoznam
Ak chcete vložiť zoznam do pracovného hárka, musíte prejsť na Karta vývojára, klikni Vložiť a v časti Ovládacie prvky ActiveX vyberte Pole so zoznamom:
Obrázok 1. Vložte listbox do pracovného hárka
Keď vyberiete zoznam, ktorý ste vložili, môžete naň kliknúť Vlastnosti pod Karta vývojára:
Obrázok 2. Zmeňte vlastnosti zoznamu
Tu môžete nastaviť rôzne vlastnosti zoznamu. Na začiatku sme zmenili atribút názov do lstListBox. Teraz môžeme použiť Listbox s týmto názvom v kóde VBA.
Naplňte zoznam do kódu VBA
Najprv musíme zoznam naplniť hodnotami. Zoznambox je vo väčšine prípadov potrebné vyplniť pri otvorení zošita. Z tohto dôvodu musíme vložiť kód na vyplnenie objektu Listbox v objekte Pracovný zošit, postup Otvorené. Tento postup sa vykoná vždy, keď používateľ otvorí zošit. Tu je kód:
123456789 | S Sheet1.lstListBox.Pridať položku "John".Pridať položku "Michael".AddItem "Jennifer".Pridať položku "Lilly".Pridať položku "Robert"Ukončiť s |
Ako vidíte na obrázku 3, do nášho zoznamu sme vložili 5 mien (John, Michael, Jennifer, Lilly a Robert):
Obrázok 3. Naplňte zoznam v VBA
Vyplňte zoznamové pole z rozsahu buniek
Ďalším možným spôsobom, ako naplniť zoznam, je nechať to urobiť používateľa. Listbox je možné prepojiť s rozsahom buniek. Preto zakaždým, keď používateľ zadá novú hodnotu v oblasti buniek, zoznam sa aktualizuje s touto hodnotou.
Ak to chcete povoliť, musíte prejsť na Vlastnosti zoznamu a nastavte atribút ListFillRange:
Obrázok 4. Naplňte pole Listbox z rozsahu buniek
Náš zoznam je prepojený s rozsahom E2: E5, kde sme zadali požadované mená (Nathan, Harry, George, Roberta). Výsledkom je, že v zozname je teraz tieto názvy.
Získajte vybranú položku zo zoznamu vo VBA
Účelom zoznamu je získať pre používateľov výber. Na získanie hodnoty, ktorú vybral používateľ, musíte použiť tento kód:
123 | Dim strSelectedItem As VariantstrSelectedItem = Sheet1.lstListBox.Value |
V atribúte je výber používateľov Hodnota z Sheet1.lstListbox predmet. Táto hodnota je priradená k premennej strSelectedItem:
Obrázok 5. Získajte zvolenú hodnotu zo zoznamu v programe VBA
Vybrali sme Harry v zozname a vykonajte postup. Ako vidíte na obrázku 5, hodnota strSelectedItem je Harry, čo je hodnota, ktorú sme vybrali. Okrem toho môžete túto premennú spracovať v kóde.
Vymažte zoznam
Na vymazanie zoznamového poľa vo VBA musíte použiť jasný metóda Sheet1.lstListBox predmet. Odstráni všetky položky zo zoznamu. Tu je kód:
1 | Sheet1.lstListBox.Clear |
Keď spustíme kód, dostaneme prázdne pole so zoznamom:
Obrázok 6. Vymažte zoznam
Použite Listbox v užívateľskej forme
Ako sme už spomenuli, Listbox sa najčastejšie používa vo formách Userforms. Aby sme vám vysvetlili, ako to môžete urobiť, najskôr vložíme užívateľský formulár. V editore VBA kliknite pravým tlačidlom myši na Názov modulu, kliknite na Vložiť a vyber si UserForm:
Obrázok 7. Vložte užívateľský formulár
Ak chcete zobraziť ovládacie prvky na vkladanie, musíte povoliť Sada nástrojov. Ak to chcete urobiť, kliknite naSada nástrojov ikonu na paneli s nástrojmi. Potom získate okná so všetkými dostupnými ovládacími prvkami. Môžete kliknúť na ListBox vytvoriť ho vo forme používateľa.
Obrázok 8. Vložiť zoznam do užívateľského formulára
Pomenujeme ComboBox cmbComboBox. Aby sme ho naplnili hodnotami, musíme do metódy vložiť nasledujúci kód Inicializovať predmetu UserForm:
12345678910111213 | Private Sub UserForm_Initialize ()S UserForm1.lstListBox.Pridať položku "John".Pridať položku "Michael".AddItem "Jennifer".Pridať položku "Lilly".Pridať položku "Robert"Ukončiť sKoniec pod |
Tento kód sa spustí zakaždým, keď používateľ spustí užívateľskú formu, a naplní zoznamovú schránku týmito 5 menami:
Obrázok 9. Pole so zoznamom s hodnotami vo forme používateľa
Ak chcete získať vybranú hodnotu z ComboBoxu, musíte použiť rovnakú logiku pre Combobox v pracovnom hárku, ktorá je vysvetlená vyššie v článku.