Seznam VBA

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.

wave wave wave wave wave