Ve VBA můžete vytvořit soubor Listbox kde si uživatel může vybrat jednu z uvedených možností. Listbox se často používá v Userforms, ale může být také použit v listu. V tomto kurzu se naučíte, jak vytvořit, naplnit a odstranit Listbox. Uvidíte také, jak získat uživatelskou volbu ve VBA a použít ji v kódu.
Pokud se chcete dozvědět, jak vytvořit ComboBox, klikněte sem: ComboBox VBA
Pokud se chcete dozvědět, jak vytvořit zaškrtávací políčko, klikněte sem: Zaškrtávací políčko VBA
Vytvořte si seznam
Chcete -li vložit listbox do listu, musíte přejít na Karta vývojáře, klikněte Vložit a v části Ovládací prvky ActiveX vyberte Seznam:
Obrázek 1. Vložte listbox do listu
Když vyberete seznam, který jste vložili, můžete na něj kliknout Vlastnosti pod Karta vývojáře:
Obrázek 2. Změňte vlastnosti Listboxu
Zde můžete nastavit různé vlastnosti Listboxu. Na začátku jsme změnili atribut název na lstListBox. Nyní můžeme použít Listbox s tímto názvem v kódu VBA.
Naplňte seznam v kódu VBA
Nejprve musíme seznam naplnit hodnotami. Ve většině případů je nutné při otevření sešitu naplnit Listbox. Z tohoto důvodu musíme vložit kód pro naplnění objektu Listbox v objektu pracovní sešit, postup Otevřeno. Tento postup se provede pokaždé, když uživatel otevře sešit. Zde je kód:
123456789 | S Sheet1.lstListBox.AddItem "John".Přidat položku „Michael“.AddItem "Jennifer".AddItem „Lilly“.Přidat položku "Robert"Konec s |
Jak vidíte na obrázku 3, naplnili jsme náš seznam 5 jmény (John, Michael, Jennifer, Lilly a Robert):
Obrázek 3. Naplňte seznam ve VBA
Naplňte seznam z rozsahu buněk
Dalším možným způsobem, jak naplnit seznam, je nechat uživatele to udělat. Seznam buněk lze propojit s rozsahem buněk. Proto pokaždé, když uživatel zadá novou hodnotu v oblasti buněk, Listbox se aktualizuje s touto hodnotou.
Pokud to chcete povolit, musíte jít na Vlastnosti seznamu a nastavte atribut ListFillRange:
Obrázek 4. Naplňte Listbox z oblasti buněk
Spojili jsme náš Listbox s rozsahem E2: E5, kde jsme dali jména, která chceme (Nathan, Harry, George, Roberta). Výsledkem je, že Listbox je nyní naplněn těmito názvy.
Získejte vybranou položku seznamu v VBA
Účelem Listboxu je přimět uživatele k výběru. Abyste mohli načíst hodnotu vybranou uživatelem, musíte použít tento kód:
123 | Dim strSelectedItem As VariantstrSelectedItem = Sheet1.lstListBox.Value |
Výběr uživatele je v atributu Hodnota z List1.lstListbox objekt. Tato hodnota je přiřazena proměnné strSelectedItem:
Obrázek 5. Získejte vybranou hodnotu ze Seznamu ve VBA
Vybrali jsme Harry v seznamu a provedl postup. Jak vidíte na obrázku 5, hodnota strSelectedItem je Harry, což je hodnota, kterou jsme vybrali. Kromě toho můžete tuto proměnnou zpracovat v kódu.
Vymažte seznam
Chcete -li vymazat seznam ve VBA, musíte použít Průhledná metoda List1.lstListBox objekt. Odstraní všechny položky ze seznamu. Zde je kód:
1 | Sheet1.lstListBox.Clear |
Když spustíme kód, dostaneme prázdný Listbox:
Obrázek 6. Vymažte seznam
Použijte Listbox v Userform
Jak jsme zmínili, Listbox se nejčastěji používá v Userforms. Abychom vysvětlili, jak to můžete udělat, nejprve vložíme formulář Userform. V editoru VBA klikněte pravým tlačítkem na Název modulu, klikněte na Vložit a vyberte si UserForm:
Obrázek 7. Vložte uživatelský formulář
Chcete -li zobrazit ovládací prvky pro vkládání, musíte povolit Sada nástrojů. Chcete -li to provést, klikněte naSada nástrojů ikonu na panelu nástrojů. Poté získáte okna se všemi dostupnými ovládacími prvky. Můžete kliknout na ListBox jej vytvořit v Userform.
Obrázek 8. Vložte Listbox do Userform
Pojmenujeme ComboBox cmbComboBox. Abychom jej naplnili hodnotami, musíme do metody vložit následující kód Inicializovat objektu UserForm:
12345678910111213 | Private Sub UserForm_Initialize ()S UserForm1.lstListBox.AddItem "John".Přidat položku „Michael“.AddItem "Jennifer".AddItem „Lilly“.Přidat položku "Robert"Konec sEnd Sub |
Tento kód se spustí pokaždé, když uživatel spustí Userform a naplní Listbox těmito 5 názvy:
Obrázek 9. Seznam s hodnotami v Userform
Pokud chcete získat vybranou hodnotu z ComboBoxu, musíte použít stejnou logiku pro Combobox v listu, která je vysvětlena dříve v článku.