Přeskočit navigaci | Přeskočit na novinky

Jste zde: Úvodní stránka » excel » vba-formulare » combobox-prakticky-excel-vba
Microsoft Excel logo

ComboBox ve formulářích - Excel VBA

Videokurzy Excel

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ší.

Úvodem do ComboBox

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.

Seznam kapitol

Ukázka

Formulář s ComboBox

Zdrojová tabulka

Tabulka zdroj dat

Poznámka: Zdrojová tabulka obsahuje i dynamicky definované názvy. Po vložení záznamu se rozsah tabulky automaticky rozšíří (zvětší).

Jeden sloupec dat - staticky

ComboBox - ukázka

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

Jeden sloupec dat dynamicky

ComboBox - ukázka

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.

Více sloupců - staticky i dynamicky

ComboBox - ukázka - více sloupců

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

Více sloupců včetně záhlaví

ComboBox - ukázka - více sloupců

Pokud chcete mít v ComboBox záhlaví. Jako záhlaví se použije první řádek zdrojové z tabulky v RowSource.

ColumnHeads True

Více sloupců včetně skrytých

Chcete-li z tabulky některé údaje skrývat, stačí použít v ColumnWidths 0pt:

ColumnWidths 0 pt;30 pt;0 pt;30 pt

Přidat/smazat záznamy do/z ComboBox

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")

Další ukázky v přípravě

Zobrazit již umíte a následně jak vyčíst, upravit design, atd. Příklady doplním časem.

Přečíst x-tou hodnotu

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...

Počet záznamo v ComboBox

Jak zjisti počet položek v ComboBox.

polozka = ComboBox1.ListCount

Odstranit x-tou položku

Jak odstranit x-tou položku. Pokud není potřeba odstranit vše jen tu vybranou.

polozka = ComboBox3.RemoveItem(1)

Properties

Seznam základních vlastností prvku ComboBox (Výběrové pole). Okno vlastností můžeme zobrazit klávesou F4.

Properties CoomboBox
  • (Name)
  • AutoSize
  • AutoTab
  • AutoWordSelect
  • BackColor
  • BackStyle
  • BorderColor
  • BorderStyle
  • BoundColumn
  • ColumnCount
  • ColumnWidths
  • ControlSource
  • ControlTipText
  • DragBehavior
  • DropButtonStyle
  • Enabled
  • EnterFieldBehavior
  • Font
  • ForeColor
  • Height
  • HelpContextID
  • HideSelection
  • IMEMode
  • Left
  • ListRows
  • ListStyle
  • ListWidth
  • Locked
  • MatchEntry
  • MatchRequired
  • MaxLength
  • MouseIcon
  • MousePointer
  • RowSource
  • SelectionMargin
  • ShowDropButtonWhen
  • SpecialEffect
  • Style
  • TabIndex
  • TabStop
  • Tag
  • Text
  • TextAlign
  • TextColumn
  • Top
  • TopIndex
  • Value
  • Visible
  • Width

Podrobněji v článku Vlastnosti ComboBox

Související články

Může vás dále zajímat:

Microsoft Excel VBA - stahuj logo

Ke stažení

Soubor ke stažení je v přípravě.


Závěrem

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

Odměna

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.


Pavel Lasák - autor webu

Pavel Lasák

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ů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře


Petr Pecháček

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/

Pavel Lasák

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.

Mira Přibil

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.

Šotek

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ěď.






Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

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 |