VBA ComboBox

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.

wave wave wave wave wave