Programování v Excelu 2000, 2002, 2003
ListBox1.ColumnCount = 3 ListBox1.AddItem "Řádek 1, Sloupec 1" ListBox1.List(0, 1) = "Řádek 1, Sloupec 2" ListBox1.List(0, 2) = "Řádek 1, Sloupec 3" ListBox1.AddItem "Řádek 2, Sloupec 1" ListBox1.List(1, 1) = "Řádek 2, Sloupec 2" ListBox1.List(1, 2) = "Řádek 2, Sloupec 3" ListBox1.AddItem "Řádek 3, Sloupec 1" ListBox1.List(2, 1) = "Řádek 3, Sloupec 2" ListBox1.List(2, 2) = "Řádek 3, Sloupec 3" ListBox1.TextColumn = 1
Je-li seznam naplněn druhým způsobem (není tedy vázán na data), je z něj možné jednu položku odstranit metodou RemoveItem, jejímž parametrem je pořadové číslo položky. Všechny položky v seznamu vymaže metoda Clear. ' odstraní první položku ze seznamu ListBox1.RemoveItem 0 ' vymaže všechny položky ze seznamu ListBox1.Clear
Velmi často se seznamy používají k doplňování vybraných hodnot do nějaké buňky. Např. seznam pro doplnění jedné z možných hodnot koeficientu by po výběru položky automaticky doplnil její hodnotu do nějaké buňky. Příslušná vazba se vytváří nastavením vlastnosti ControlSource. U seznamů s větším množstvím položek můžete pro rychlé vyhledání určité položky využít faktu, že seznam umí zachytávat stisk kláves a podle zadaného písmena či písmen rychle vyhledat následující položku začínající tímto znakem. Vyhledávání se dá konfigurovat pomocí vlastnosti MatchEntry, která má tři možné hodnoty – fmMatchEntryFirstLetter (hledání jen podle jednoho znaku), fmMatchEntryComplete (hledání podle celé sekvence zapsaných znaků) a fmMatchEntryNone (vyhledávání je vypnuto). Nejsou-li položky v seznamu seřazeny, bude hledána vždy další položka začínající zapsaným znakem či sekvencí znaků, takže hledání konkrétní položky může trvat delší dobu. Výhodou ovládacího prvku ListBox oproti rozvíracímu seznamu (ComboBox) je možnost výběru více položek. Tato možnost se aktivuje pomocí vlastnosti MultiSelect, jež má tři možné hodnoty:
Hodnota
Význam
fmMultiSelectSingle
Vybrána může být jen jedna položka (výchozí hodnota).
fmMultiSelectMulti
Položky vybíráte stiskem mezerníku nebo klepnutím myši. Opětovný stisk mezerníku nebo klepnutí myši vybranou položku opět odznačí.
fmMultiSelectExtended
Další položky můžete vybírat nebo odznačit klepnutím myši spolu se stisknutou klávesou CTRL. Kombinací šipky nahoru či dolů a klávesy SHIFT můžete výběr rozšiřovat směrem nahoru či dolů o další položky. Toto chování odpovídá výběru více položek např. v aplikace Průzkumník.
98
F O R M U L ÁŘ E
Ukázka elektronické knihy, UID: KOS181277
For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) Then ' zde bude kód pro vybranou položku End If Next i
Rozvírací seznam (ComboBox) Tento ovládací prvek se podobá předchozímu seznamu, obsahuje totiž také několik hodnot. Jde však o rozvírací seznam, zobrazuje tedy pouze jednu hodnotu, další se objeví až po klepnutí na šipku po pravé straně. Další rozdíl vůči seznamu spočívá v tom, že uživateli můžete povolit zápis nových hodnot, které se v seznamu dosud nevyskytují, do textové části pole. Uvedená možnost se nastavuje vlastností Style, výchozí hodnota 0 (fmStyleDropDownCombo) zápis do textové části pole umožňuje, hodnota 2 ho zakazuje. Při zápisu ovládací prvek automaticky doplňuje zbytek textu první odpovídající položky v seznamu.
Český název pole se seznamem, který se někdy v dokumentaci objevuje, se v češtině příliš nepoužívá – rozvírací seznam je častější.
Obrázek 4.26 Rozevřený seznam na formuláři.
Programování v Excelu 2000, 2002, 2003
Jestliže máte v seznamu vybráno více položek, musíte nějakým způsobem určit, které jsou a které nejsou vybrané (vlastnost ListIndex vrací pouze číslo položky, která je zaměřena). Kontrolu provedete pomocí vlastnosti Selected, která obsahuje pole proměnných s hodnotami True/False. Počet prvků v této proměnné odpovídá počtu položek v seznamu. Bude-li tedy vybrána první položka seznamu, bude mít vlastnost Selected(0) hodnotu True (indexy začínají stejně jako u vlastnosti ListIndex nulou). Kontrola vybraných položek tedy může vypadat asi takto:
Tento ovládací prvek je vlastně kombinací dvou ovládacích prvků (textové pole a seznam), proto se u něj můžete setkat s vlastnostmi obou. Navíc však má několik vlastností jedinečných:
F O R M U L ÁŘ E
99
Ukázka elektronické knihy, UID: KOS181277
Programování v Excelu 2000, 2002, 2003 100
Vlastnost
Význam
DropButtonStyle
Vizuální podoba šipky pro rozevření seznamu.
ListRows
Určuje počet položek v rozevřeném seznamu, výchozí počet je 8.
MatchRequired
Logická hodnota určující, zda v poli se seznamem stylu fmStyleDropDownCombo může (False) nebo nemůže (True) uživatel zapisovat do textové části položku, která se v seznamu nevyskytuje. Jestliže je tato vlastnost nastavena na hodnotu True, nemůže se uživatel přesunout do jiného ovládacího prvku, dokud nezadá hodnotu, jež se v seznamu nachází. Zápis do textové části ovládacího prvku se používá k rychlému vyhledání určité položky.
ShowDropButtonWhen
Určuje, kdy bude vidět šipka pro rozevření seznamu (vždy, nikdy, jen při zaměření ovládacího prvku). Není-li šipka vidět, je možné pole se seznamem rozevřít pomocí klávesy F4 nebo ALT+ŠIPKA DOLŮ.
Rámeček (Frame) Ovládací prvek Rámeček slouží k vizuálnímu, případně i funkčnímu seskupení jiných ovládacích prvků. V drtivé většině případů (pravděpodobně vždy) nemá přiřazen kód k žádné své události. Seskupování prvků má význam buď estetický (formulář pak „vypadá lépe“) nebo tak lze vytvářet logické skupiny ovládacích prvků, např. jednu skupinu obsahující prvky pro zápis údajů o klientovi a druhou skupinu, v níž jsou ovládací prvky pro údaje o zásilce. Rámeček je také užitečný v případech, kdy má formulář obsahovat více skupin přepínačů. Schopnost obsahovat jiné ovládací prvky řadí rámeček mezi tzv. kontejnery. Výhodou kontejneru je mimo jiné fakt, že při změně jeho pozice se automaticky posouvají i všechny ovládací prvky, které v něm jsou umístěny. Aby byl ovládací prvek umístěn skutečně uvnitř rámečku, musíte rámeček nejdříve vybrat, a teprve poté do něj nakreslit (vložit) ovládací prvek.
F O R M U L ÁŘ E
Ukázka elektronické knihy, UID: KOS181277