Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
Informace ohledně praktického použití ComboBoxu ve formulářích Excel VBA. Vkládaní odkazů na zdroj dat, více sloupců, skrývaní sloupců v ComboBoxu. Dynamické odkazy na zdroj dat a designové úpravy a další.
ComboBox, česky rozbalovací seznam.
Cílem tohoto článku je ukázat jak ve formulářích využít ComboBox. Předpokladem je, že formulář již máte vytvořený a jen do něj potřebujete umístit ComboBox, který bude čerpat data z listu, případně tyto data přidáte pomocí VBA skriptu.
Poznámka: Zdrojová tabulka obsahuje i dynamicky definované názvy. Po vložení záznamu se rozsah tabulky automaticky rozšíří (zvětší).
Do ComboBox je potřeba vložit údaj z jednoho sloupce v tabulce, bez záhlaví daného sloupce. Data potřebujeme z oblasti A2:A6 na listě ComboBox.
Properties:
ColumcCount 1
ListRows 5
RowSource ComboBox!A2:A6
V ComboBox potřebuji mít dynamicky vkládaná data, přidají-li se na listu data, tak potřebuji, aby se stejné hodnoty přidaly i do ComboBoxu. Využijeme dynamickou oblast. Více o dynamicky definované oblasti v samostatném článku zde.
Definice dynamické oblasti:
Jmeno
=POSUN(ComboBox!$B$2; 0; 0; POČET2(ComboBox!$B$2:$B489); 1)
Properties:
ColumcCount 1
ListRows 8
RowSource Jmeno
Poznámka: V Properties lze doplňovat údaj ListRows také dynamicky, podle počtu položek.
Jeden sloupec zobrazit je jednoduché, ale jak jich zobrazit více? Potřebujete zvolit zaměstnance a mít v CobmboBoxu (seznamu) jen ID daného zaměstnance je málo, stejně tak jako příjmení (nebudeme vědět kterého z Nováku zvolit).
ColumcCount 1
ListRows 8
RowSource ComboBox!A2:B10
Pro natavení šířky jednotlivých sloupců v ComboBox:
ColumnWidths 20 pt;40 pt;40 pt;30pt
Definice dynamické oblasti:
Jmeno
=POSUN(ComboBox!$A$2; 0; 0; POČET2(ComboBox!$B$2:$B481); 4)
Více o dynamické oblasti v samostatném článku zde.
Pak jen nastavit zdroj řádku pro ComboBox.
RowSource Tabulka1
Pokud chcete mít v ComboBox záhlaví. Jako záhlaví se použije první řádek zdrojové z tabulky v RowSource.
ColumnHeads True
Chcete-li z tabulky některé údaje skrývat, stačí použít v ColumnWidths 0pt:
ColumnWidths 0 pt;30 pt;0 pt;30 pt
Smazat v ComboBox1 všechny záznamy:
ComboBox1.Clear
Přidat do ComboBox1 tři záznamy (ovoce):
With ComboBox1
.AddItem "Jablko"
.AddItem "Hruška"
.AddItem "Třešeň"
End With
Lze přidat do ComboBox1 tři záznamy (zeleniny):
With ComboBox1
.AddItem "Mrkev"
.AddItem "Česnek"
.AddItem "Cibule"
End With
Nebo využít pole Array
ComboBox1.List = Array("Mrkev", "Česnek", "Cibule")
Zobrazit již umíte a následně jak vyčíst, upravit design, atd. Příklady doplním časem.
Jak zjisti obsah ComboBox.
polozka = ComboBox1.List(1)
Poznámka lze využít i v cyklu For když víme kolik máme položek...
Jak zjisti počet položek v ComboBox.
polozka = ComboBox1.ListCount
Jak odstranit x-tou položku. Pokud není potřeba odstranit vše jen tu vybranou.
polozka = ComboBox3.RemoveItem(1)
Seznam základních vlastností prvku ComboBox (Výběrové pole). Okno vlastností můžeme zobrazit klávesou F4.
Podrobněji v článku Vlastnosti ComboBox
Může vás dále zajímat:
Soubor ke stažení je v přípravě.
Využíváte ve formuláři ComboBox? Máte nějaké zajímavé skripty, můžete se pochlubit v komentářích.
Článek byl aktualizován: 19.09.2020 11:06
Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.
Přidáno: 26.04.16 16:24
Snad vám Pavle nepolezu do zelí, sepsal jsem shodou okolností také článek: http://excelplus.net/pole-se-seznamem-cili-combobox/
Přidáno: 26.04.16 18:04
To Petr: Parádní, vzal jste to pěkně zeširoka - dobrá práce.
Do zelí nelezete, o ComboBox (a dalších prvcích) se toho dá napsat ještě více a je dobře, že o tom napíše někdo jiný, jinak než píšu já (můj popis určitě nevyhovuje všem, není a nemůže v něm vše).
Na druhou stranu téměř vše o ComboBox (a nejen o něm) je již napsáno. Sice v angličtině, ale kdo to myslí s Excelem vážně, tak se tomuto jazyku stejně neubrání.
Takže pište dále, budu rád (mohu něco dalšího naučit a zlepšit) a nejen já, ale určitě i vaši čtenáři.
Přidáno: 14.09.16 10:15
Váš web je skvělý úžasný, ale combobox jsem absolutně zmatený. Chtělo by to jeden konkrétní případ, aby se to dalo lépe pochopit, třeba jednoduchý UserForm (vyvolaný Comandbutton z listu sešitu), pouze s ComboBoxem který načte dymanickou oblast (oblast jenž se mění dle počtu řádků), následně vyberete jednu hodnotu z comboboxu a ta se Vám předá do konkrétní buňky. Moc Vám děkuji. Nejsem expert na excel, ale ani úplný laik a i přesto, že jsem si pročetl vše asi 3x, tak toto neumím zkomponovat.
Přidáno: 03.11.16 00:36
Dobrý den, měl bych dotaz. Potřeboval bych combobox volat paramterem, mám jich v jednom userform více a přijde mi neefektivní vždy psát userform1.combobox1.value,userform1.combobox2.value,... Potřeboval bych tedy něco jako: For i=1 to 10 box="UserForm1.Combobox" & i hodnota=box.value next i Díky moc za případnou odpověď.
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |