Skip to main content

Programování v Excelu 2013 a 2016 (Ukázka, strana 99)

Page 1

s některou buňkou, do které se zapíše hodnota zvolená v prvku. Druhou možností je vytvořit makro, které se po změně hodnoty prvku automaticky spustí. Vložení některého z formulářových prvků na list provedete stejně, jako u příkazového tlačítka: 1. Na kartě Vývojář klepněte na šipku u tlačítka Vložit. 2. V první řadě voleb, zobrazených v seznamu Ovládací prvky formuláře, klepněte na vkládaný prvek (rozvírací seznam je druhý zleva, zaškrtávací volba třetí zleva a poloha přepínače první zprava). Kurzor myši se změní na křížek. 3. Klepnutím na listu vytvoříte prvek. 4. U zaškrtávací volby a polohy přepínače klepněte na prvek pravým tlačítkem myši, z místní nabídky použijte příkaz Upravit text a přepište popisek u prvku.

Obrázek 8.2: Vložení formulářového prvku na list

Vytvořený prvek je vhodné přejmenovat. Prvek označte pravým tlačítkem myši, klepněte do pole názvů, umístěného v levé části řádku vzorců, přepište název prvku a potvrďte klávesou Enter.

Obrázek 8.3: Přejmenování formulářového prvku

8.4.1  Kolekce formulářových prvků Formulářové prvky, vytvořené na listu, jsou součástí kolekce Shapes, která zahrnuje všechny grafické objekty na listu, tedy formulářové prvky, grafy, obrázky atd. Na formulářový prvek se odvoláte jako na člen této kolekce s uvedeným názvem. S formulářovými prvky není možné pracovat přímo. Je nutné je napřed označit prvek metodou Select a poté pracovat s objektem Selection. Hodnotu, nastavenou v prvku vrací vlastnost Value, kterou můžete vynechat. Pro zjištění vracené hodnoty je možné použít např. tento kód:

98 Programování v Excelu 2013 a 2016

Ukázka elektronické knihy, UID: KOS254424


ActiveSheet.Shapes("Volba").Select MsgBox Selection.Value

Vlastnost Value umožňuje také zápis. Příkazy ActiveSheet.Shapes("Seznam").Select Selection.Value = 1

nastaví v seznamu první volbu. U rozvíracího seznamu je hodnotou pořadové číslo volby. Zaškrtávací volba a jednotlivé polohy přepínače mají hodnoty 1 (označeno) nebo - 4146 (neoznačeno). Protože pro práci s formulářovým prvkem v kódu VBA je nutné nejprve prvek označit, posledním příkazem makra by mělo být použití metody Select u některé buňky, aby se označení prvku zrušilo.

8.4.2  Rozevírací seznam Seznam voleb, zobrazovaných v rozevíracím seznamu, zadáte z buněk na listu: 1. Na vytvořený seznam klepněte pravým tlačítkem myši. 2. Z místní nabídky použijte příkaz Formát ovládacího prvku. 3. V zobrazeném okně klepněte na záložku karty Ovládací prvek. 4. V položce Vstupní oblast vyznačte buňky se seznamem voleb (mohou být i na jiném listu). 5. Potvrďte tlačítkem OK.

Obrázek 8.4: Vlastnosti rozvíracího seznamu

Se seznamem je možno spojit makro, které se spustí po změně volby v seznamu. To provedete tak, že na seznam klepnete pravým tlačítkem myši, z místní nabídky použijete příkaz Přiřadit

Pokročilé progra­movací techniky 99

Ukázka elektronické knihy, UID: KOS254424


makro, v zobrazeném okně se seznamem maker označíte název potřebného makra a potvrdíte tlačítkem OK. Propojené makro zpravidla zjistí hodnotu, nastavenou v seznamu a použije ji v dalším kódu. Typickým příkladem je nalezení hodnoty v datové tabulce podle pořadového čísla volby. V seznamu se např. vybere název výrobku, propojené makro nalezne odpovídající cenu a zapíše ji do některé buňky: ActiveSheet.Shapes("Seznam").Select vyber = Selection.Value Range("B2") = Application.WorksheetFunction.VLookup(vyber, Range("K2:M20"), 3) Range("A1").Select

Do vlastnosti Value je možné zapisovat. Hodnota nula vymaže z označeného seznamu nastavenou volbu: ActiveSheet.Shapes("Seznam").Select Selection.Value = 0

Vstupní oblast seznamu je možné nastavit také kódem. K tomu použijete vlastnost ListFillRange, do které zapíšete textový řetězec s adresou oblasti: ActiveSheet.Shapes("Seznam2").Select Selection.ListFillRange = "Seznamy!M2:M20"

Použití vlastnosti ListFillRange umožňuje vytvořit vzájemnou závislost dvou seznamů. Podle volby v prvním seznamu se z datové tabulky vyberou položky, odpovídající této volbě a zapíší se do další oblasti buněk, jejíž adresa se použije ve vlastnosti ListFillRange u druhého seznamu.

8.4.3  Zaškrtávací volba a přepínač Zaškrtávací volbu nebo přepínač zpravidla spojíte s makrem, které zjistí hodnotu v prvku a provede potřebnou akci. Příklad makra, spojené se zaškrtávací volbou: ActiveSheet.Shapes("Volba").Select If Selection.Value = 1 Then Range("B20") = 0.2 Else Range("B20") = 0.1 End If Range("B20").Select

U přepínače je nutné zjistit označenou volbu, proto je třeba zjistit hodnotu u jednotlivých voleb. Pro dvě volby by kód vypadal takto ActiveSheet.Shapes("Volba1").Select If Selection.Value = 1 Then vysledek = 1 End If ActiveSheet.Shapes("Volba2").Select If Selection.Value = 1 Then vysledek = 2 End If

a podle hodnoty proměnné vysledek se bude řídit další průběh kódu.

100 Programování v Excelu 2013 a 2016

Ukázka elektronické knihy, UID: KOS254424


Turn static files into dynamic content formats.

Create a flipbook