ComboBoxes umožňují uživatelům vybrat možnost z rozevíracího seznamu. ComboBoxy lze vytvořit ve VBA UserForms nebo pomocí listu aplikace Excel. V tomto kurzu se naučíte vytvářet a manipulovat s ComboBoxes ve VBA a v listech Excelu.
Pokud se chcete dozvědět, jak vytvořit Listbox, klikněte sem: VBA Listbox
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 ComboBox v listu aplikace Excel
Chcete -li vložit ComboBox do listu, musíte přejít na Karta vývojáře, klikněte Vložit a v části Ovládací prvky ActiveX vyberte Kombinovaný box:
Obrázek 1. Vložte ComboBox do listu
Když vyberete vložený ComboBox, můžete na něj kliknout Vlastnosti pod Karta vývojáře:
Obrázek 2. Změňte vlastnosti ComboBoxu
Zde můžete nastavit různé vlastnosti ComboBoxu. Pro začátek jsme změnili atribut název na cmbComboBox. Nyní můžeme použít ComboBox s tímto názvem v kódu VBA.
Naplňte ComboBox v kódu VBA
Nejprve musíme ComboBox naplnit hodnotami. Ve většině případů je nutné ComboBox naplnit při otevření sešitu. Z tohoto důvodu musíme vložit kód pro naplnění ComboBoxu do 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.cmbComboBox.AddItem "John".Přidat položku „Michael“.AddItem "Jennifer".AddItem „Lilly“.Přidat položku "Robert"Konec s |
Když kliknete na rozevírací nabídku, dostanete 5 jmen na výběr (John, Michael, Jennifer, Lilly a Robert):
Obrázek 3. Naplňte ComboBox ve VBA
Naplňte ComboBox z oblasti buněk
Další možný způsob naplnění ComboBoxu je nechat uživatele udělat. ComboBox lze propojit s rozsahem buněk. V tomto přístupu se pokaždé, když uživatel zadá novou hodnotu v oblasti buněk, ComboBox aktualizuje s touto hodnotou.
Pokud to chcete povolit, musíte přejít na Vlastnosti pole ComboBox a nastavte atribut ListFillRange do rozsahu buněk (v našem případě E2: E5):
Obrázek 4. Naplňte ComboBox z oblasti buněk
Spojili jsme náš ComboBox s řadou E2: E5, kde jsme dali jména, která chceme (Nathan, Harry, George, Roberta). V důsledku toho je ComboBox nyní naplněn těmito názvy:
Obrázek 5. Osazený ComboBox z řady buněk
Získejte vybranou položku ComboBoxu ve VBA
Účelem ComboBoxu je získat výběr uživatelů. Abyste mohli získat výběr uživatelů, musíte použít tento kód:
123 | Dim strSelectedItem As VariantstrSelectedItem = Sheet1.cmbComboBox.Value |
Výběr uživatele je v atributu Hodnota z List1.cmbComboBox objekt. Tato hodnota je přiřazena proměnné strSelectedItem:
Obrázek 6. Získejte vybranou hodnotu z ComboBoxu ve VBA
Vybrali jsme Julie v ComboBoxu a provedl postup. Jak vidíte na obrázku 5, hodnota strSelectedItem je Julie, což je hodnota, kterou jsme vybrali. Nyní můžete tuto proměnnou dále zpracovávat v kódu.
Vymažte ComboBox
Pokud chcete vymazat ComboBox ve VBA, musíte použít Průhledná metoda List1.lstComboBox objekt. Odstraní všechny položky z ComboBoxu. Zde je kód:
1 | List1.cmbComboBox.Clear |
Když spustíme kód, dostaneme prázdný ComboBox:
Obrázek 7. Vymažte ComboBox
Použijte ComboBox v Userform
Jak jsme zmínili, Combobox 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 8. 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 ComboBox jej vytvořit v Userform.
Obrázek 9. Vložte ComboBox 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.cmbComboBox.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í Combobox těmito 5 názvy:
Obrázek 10. ComboBox 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.