v Excelu záznam, úprava a programování maker Programování Marek Laurenčík

Podobné dokumenty
v Excelu záznam, úprava a programování maker Programování Marek Laurenčík

v Excelu záznam, úprava a programování maker Programování Marek Laurenčík

Ukazka knihy z internetoveho knihkupectvi

Programování. záznam, úprava a programování maker

Programování v Excelu 2007 a 2010 záznam, úprava a programování maker

Programování v Excelu 2007 a 2010 záznam, úprava a programování maker

MS Excel makra a VBA

8 Makra Příklad 4 Excel 2007

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Marek Laurenčík. Excel. práce s databázemi a kontingenčními tabulkami

www. www g. r g ad ra a d.c a. z Kniha obsahuje tato témata: Příklady k procvičování zdarma ke stažení na

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

MS Excel Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Základní práce s Excelem 2007

ZŠ ÚnO, Bratří Čapků 1332

3 Makra Příklad 4 Access Ve vytvořené databázi potřebuje sekretářka společnosti Naše zahrada zautomatizovat některé úkony pomocí maker.

práce s databázemi a kontingenčními tabulkami

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

Formuláře. Téma 3.2. Řešený příklad č Zadání: V databázi formulare_a_sestavy.accdb vytvořte formulář pro tabulku student.

Access. Tabulky. Vytvoření tabulky

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

742 Jak prohlížet seznam dat pomocí formuláře. další záznamy pomocí formuláře

Úvodní příručka. Získání nápovědy Kliknutím na otazník přejděte na obsah nápovědy.

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

3 Makra Příklad 4 Access Ve vytvořené databázi potřebuje sekretářka společnosti Naše zahrada zautomatizovat některé úkony pomocí maker.

FORMÁTOVÁNÍ 2. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

1 Tabulky Příklad 3 Access 2010

Pracovní sešit MS Word pokročilý

Pracovní prostředí Excel 2010

Obsah. Několik slov o Excelu 2007 a Operace při otvírání a ukládání sešitu 15. Operace s okny 27. Kapitola 1

8. Formátování. Úprava vzhledu tabulky

Gymnázium Jana Pivečky a Střední odborná škola Slavičín. III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT

Office podrobný průvodce. Tomáš Šimek

DUM 06 téma: Tvorba makra pomocí VBA

MS Excel Lekce 1. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

Word podrobný průvodce. Tomáš Šimek

Prozkoumání příkazů na pásu karet Každá karta na pásu karet obsahuje skupiny a každá skupina obsahuje sadu souvisejících příkazů.

DATABÁZE A SYSTÉMY PRO UCHOVÁNÍ DAT 61 DATABÁZE - ACCESS. (příprava k vykonání testu ECDL Modul 5 Databáze a systémy pro zpracování dat)

Microsoft Office Excel 2003

Místo úvodu. Čeho se vyvarovat. Mazání znaků

Visual Basic for Application

Přejmenování listu Dvakrát klepněte na pojmenování listu, napište nový název a potvrďte klávesu ENTER.

Modul 2. Druhá sada úkolů:

PRACOVNÍ SEŠIT MS EXCEL KOMPLET. Optimálním doplňkem stálého vzdělávání jsou elektronické kurzy.

Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/ MS Excel

Předmluva 11 Typografická konvence použitá v knize Úvod do Excelu

Kontingenční tabulky v MS Excel 2010

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 4. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

Formátování pomocí stylů

POKROČILÉ ZPRACOVÁNÍ TEXTU

Sestavy. Téma 3.3. Řešený příklad č Zadání: V databázi zkevidence.accdb vytvořte sestavu, odpovídající níže uvedenému obrázku.

Řazení řádků ve vzestupném pořadí (A až Z nebo 0 až 9) nebo sestupném pořadí (Z až A nebo 9 až 0)

Konvertor diakritiky 3. Instalace

Jeden z mírně náročnějších příkladů, zaměřený na úpravu formátu buňky a především na detailnější práci s grafem (a jeho modifikacemi).

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

Obsah Úvodem... 5 Co je to vlastně formulář... 6 Co je to šablona... 6 Jak se šablona uloží... 6 Jak souvisí formulář se šablonou...

Klávesové zkratky v aplikaci Excel 2010

Migrace na aplikaci Outlook 2010

10 Algoritmizace Příklad 2 Word 2007/ VBA

DATABÁZE MS ACCESS 2010

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 2. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

Marek Laurenčík. Excel. práce s databázemi a kontingenčními tabulkami

Microsoft Office Outlook 2003 s aplikací Business Contact Manager

Tlačítka a další prvky vestavěných panelů nástrojů a nabídek (CommandBar) a jejich Control ID ve verzi Excel 2010

2. cvičení z ZI1 - Excel

Praktické příklady v Excelu 2007

Excel 2007 praktická práce

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Začínáme pracovat s tabulkovým procesorem MS Excel

Tabulkový procesor Microsoft Excel

Veškeré formátovací úpravy buněk vždy platí pouze pro buňky, které si označíte.

Google Apps. dokumenty 4. verze 2012

3 Formuláře a sestavy Příklad 1 Access 2007

zobrazuje názvy polí, vložené hodnoty jednotlivých záznamů, lze v něm zadávat data (přidávat záznamy) v návrhovém zobrazení:

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.

1 Tabulky Příklad 7 Access 2010

Excel Práce s databázemi a kontingenčními tabulkami. Marek Laurenčík

Marek Laurenčík. Excel. práce s databázemi a kontingenčními tabulkami

Obsah. Úvod 15. Úvod do Excelu Práce se sešity 35

Makra lze ukládat v dokumentech nebo šablonách podporující makro příkazy. Obecně jsou tyto příkazy uloženy v části soubory s nazvané VBA projekt.

z aplikace Access 2003

Stručný manuál pro webový editor. Ukládáni základních informací, tvorba menu

ZŠ ÚnO, Bratří Čapků 1332

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Prohlížení a editace externích předmětů

Zá kládní nástávení prostr edí operáč ní ho syste mu Windows 7 á vybrány čh áplikáčí

1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam.

Excel Podrobný průvodce uživatele. Miroslav Navarrů

Řazení tabulky, dotazu nebo formuláře

Studijní skupiny. 1. Spuštění modulu Studijní skupiny

METODICKÝ POKYN PRÁCE S MS PowerPoint - ZAČÁTEČNÍCI. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.

Microsoft. Office. Microsoft. Access 2003 pro školy. Ing. Bc. Hana Rachačová. w w w. c o m p u t e r m e d i a. c z

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Průvodce aplikací FS Karta

Transkript:

Programování v Excelu záznam, úprava a programování maker Marek Laurenčík Tvorba maker a editor jazyka VBA Vlastnosti a metody buněk a oblastí Práce s listy, sešity a aplikací Excelu Pokročilejší programovací postupy Spolupráce Excelu s jinými aplikacemi

Programování v Excelu záznam, úprava a programování maker Marek Laurenčík

Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena v papírové, elektronické či jiné podobě bez předchozího písemného souhlasu nakladatele. Neoprávněné užití této knihy bude trestně stíháno. Programování v Excelu 2010 a 2013 záznam, úprava a programování maker Marek Laurenčík Vydala Grada Publishing, a.s. U Průhonu 22, Praha 7 jako svou 5389. publikaci Spoluautor Michal Bureš Odpovědný redaktor Štěpán Böhm Sazba Tomáš Brejcha Počet stran 200 První vydání, Praha 2013 Grada Publishing, a.s., 2013 Cover Photo fotobanka allphoto V knize použité názvy programových produktů, firem apod. mohou být ochrannými známkami nebo registrovanými ochrannými známkami příslušných vlastníků. Vytiskly Tiskárny Havlíčkův Brod, a.s. ISBN 978-80-247-5033-0 (tištěná verze) ISBN 978-80-247-8919-4 (elektronická verze ve formátu PDF) ISBN 978-80-247-8920-0 (elektronická verze ve formátu EPUB)

Obsah Úvod......................................................................... 9 1. 2. 3. 4. 5. Tvorba makra záznamem 1.1 Použití maker v Excelu................................................. 11 1.2 Záznam a spuštění makra............................................. 12 1.3 Různé způsoby spuštění makra........................................ 15 1.4 Spuštění makra v jiném sešitu......................................... 18 Tvorba uživatelských funkcí 2.1 Práce s editorem Visual Basicu......................................... 19 2.2 Tvorba uživatelské funkce a její použití................................ 20 2.3 Větvení kódu.......................................................... 22 2.4 Deklarace proměnných................................................ 24 2.5 Textové a datumové hodnoty.......................................... 27 2.6 Další možnosti funkcí.................................................. 28 Tvorba makra kódem a jeho spuštění 3.1 Tvorba makra pomocí kódu............................................ 29 3.2 Odkazy na buňky a oblasti............................................. 30 3.3 Standardní funkce Visual Basicu....................................... 33 3.4 Objektový model Excelu............................................... 37 3.5 Další typy odkazů...................................................... 39 3.6 Standardní dialogy VBA............................................... 40 Vlastnosti buněk a oblastí 4.1 Identifikace buňky a oblasti........................................... 43 4.2 Vlastnosti pro vzhled buněk........................................... 44 4.3 Zarovnání a slučování buněk, šířka řádků a výška sloupců............. 46 4.4 Numerický formát buněk.............................................. 47 4.5 Tvorba vzorců......................................................... 48 Metody buněk a oblastí 5.1 Označování a mazání buněk, práce s řádky a sloupci................... 52 5.2 Kopírování a přesun................................................... 53 5.3 Vyhledávání a nahrazování............................................ 55 5.4 Rozdělení textu do sloupců............................................ 57 5.5 Plnění oblastí......................................................... 59 5.6 Řazení a tvorba souhrnu............................................... 60 Obsah 5

5.7 Filtrace................................................................ 63 5.8 Odstranění duplicitních hodnot........................................ 66 6. 7. 8. 9. 10. Práce s listy, sešity a aplikací Excelu 6.1 Práce s listy............................................................ 69 6.2 Práce se sešity......................................................... 74 6.3 Aplikace Excelu........................................................ 77 Pokročilé programovací techniky 7.1 Makro s parametry.................................................... 81 7.2 Odchycení chyb........................................................ 82 7.3 Práce se soubory...................................................... 83 7.4 Práce s komentáři a hypertextovými odkazy........................... 87 7.5 Formulářové prvky na listu............................................ 90 7.6 Podmíněné formátování............................................... 92 7.7 Rozšířené řazení....................................................... 96 7.8 Práce s konci stránek.................................................. 99 Práce s kontingenčními tabulkami 8.1 Objekty v kontingenční tabulce...................................... 101 8.2 Spojení kontingenční tabulky s daty................................. 102 8.3 Rozmístění polí...................................................... 102 8.4 Výpočet a formátování hodnot...................................... 104 8.5 Tvorba kontingenční tabulky z několika datových oblastí............ 105 8.6 Tvorba kontingenční tabulky s využitím relací....................... 107 Práce s grafy 9.1 Objekty grafu....................................................... 111 9.2 Změna zdroje dat.................................................... 112 9.3 Úprava os........................................................... 114 9.4 Popisky v grafu...................................................... 115 9.5 Formátování datových řad........................................... 116 9.6 Přidání spojnice trendu.............................................. 117 9.7 Tvorba izolovaného grafu............................................ 118 9.8 Tvorba minigrafů.................................................... 120 Využití událostí 10.1 Události listu........................................................ 123 10.2 Události sešitu...................................................... 124 10.3 Události aplikace.................................................... 126 6 Programování v Excelu 2010 a 2013

11. 12. 13. 14. 15. Tvorba uživatelských formulářů 11.1 Tvorba uživatelského formuláře a jeho spuštění..................... 129 11.2 Základní prvky na formuláři......................................... 131 11.3 Vzhled prvků na formuláři........................................... 132 11.4 Další prvky na formuláři............................................. 133 11.5 Tvorba seznamů..................................................... 136 Použití kódu ve formuláři 12.1 Události prvků na formuláři......................................... 139 12.2 Události a vlastnosti formuláře..................................... 142 12.3 Vlastnosti prvků na formuláři....................................... 143 12.4 Přepínač a prvek RefEdit............................................. 146 12.5 Programování seznamů............................................. 147 12.6 Tvorba průvodce..................................................... 152 12.7 Ovládání formuláře z kódu makra................................... 153 Spolupráce Excelu s jinými programy 13.1 Spuštění jiného programu v makru................................. 157 13.2 Spolupráce Excelu s Wordem........................................ 160 13.3 Spolupráce Excelu s Accessem....................................... 163 13.4 Spolupráce Accessu s Outlookem.................................... 167 13.5 Výměna dat ve formátu XML......................................... 171 Úprava sešitu pro využití jinými uživateli 14.1 Ochrana projektu heslem............................................ 175 14.2 Tvorba a úprava ovládacích panelů.................................. 176 14.3 Práce s pásem karet................................................. 179 14.4 Tvorba doplňku...................................................... 184 Úvod do tříd 15.1 Vytvoření třídy a její instance........................................ 187 15.2 Příklad využití třídy v kódu makra................................... 190 15.3 Příklad využití třídy v kódu formuláře............................... 191 15.4 Využití modulu třídy pro programování událostí..................... 191 Závěr..................................................................... 195 Rejstřík................................................................... 197 Obsah 7

Úvod Knížka, kterou právě otvíráte, se zabývá programováním v jazyku Visual Basic for Applications (VBA) v tabulkovém kalkulátoru MS Excel 2013. Nepředpokládáme žádné předběžné znalosti programování, pouze znalost práce s kalkulátorem Excel na uživatelské úrovni. Kniha je sice primárně určena pro Excel verze 2013, avšak programovací postupy, popisované v knize, jsou použitelné i v Excelu 2010 a 2007. Případné odchylky mezi oběma verzemi (kterých je při tvorbě maker poměrně málo) jsou v knize vždy uvedeny. Přestože většina uživatelů Excelu, kteří se chtějí seznámit s programováním v jazyku VBA, již s makry pracovala, je první kapitola věnována tvorbě maker uživatelským způsobem a různým způsobům jejich spouštění. Druhá a třetí kapitola popisují základy jazyka Visual Basic. Poznatky, které zde získáte, můžete uplatnit i při programování v jiných produktech kompletu MS Office, zejména v Accessu. Manipulace se sešity pomocí maker, napsaných v jazyce VBA, je podrobně popisována ve čtvrté až desáté kapitole. Snažili jsme se seřadit látku od jednodušších k náročnějším postupům. Omezený rozsah knihy samozřejmě neumožnil zabývat se všemi možnostmi, které tabulkový kalkulátor Excel poskytuje, včetně pokročilých a speciálních postupů. Nepopisujeme např. programování datových krychlí. Jsme však přesvědčeni, že výběr látky (zahrnující také práci s grafy a kontingenčními tabulkami) pokryje převážnou většinu toho, co budete od programování v Excelu očekávat. Významné rozšíření možností Excelu představují uživatelské formuláře, a to zejména ve spojení s programovým kódem v jazyku VBA. Této problematice je věnována jedenáctá a dvanáctá kapitola. Poslední tři kapitoly jsou věnovány doplňkové problematice. Ve třinácté kapitole se dozvíte o možnosti spolupráce Excelu s jinými aplikacemi kompletu MS Office: Wordem, Accessem a Outlookem a o možnosti spolupráce sešitu se soubory v kódu XML. Čtrnáctá kapitola popisuje převod sešitu na samonosnou aplikaci, použitelnou jinými uživateli. Zde se dozvíte, jak vytvářet vlastní tlačítka a další ovládací prvky (jak způsobem použitelným v dřívějších verzích, tak i úpravou a tvorbou ovládacích karet), zajistit kód heslem nebo vytvářet a využívat vlastní doplňky. Poslední kapitola, věnovaná třídám, představuje spíše úvod do programování na vyšší úrovni. I zde však můžete jistě najít zajímavá praktická využití. Předkládanou knihu nebylo možné vybavit vloženým CD s příklady. Nicméně jsme ke každé kapitole s výjimkou první vytvořili jeden nebo více sešitů s ukázkovými makry, funkcemi a formuláři. Tyto sešity jsou ve formátu Excelu 2013 (XLSM) a můžete si je stáhnout z webových stránek nakladatelství Grada na adrese www.grada.cz. Odkazy na jednotlivé příklady naleznete v jednotlivých kapitolách. Vlastní kód VBA je v sešitech podrobně okomentován, aby byl snadno srozumitelný a mohl sloužit jako zdroj inspirace při vytváření vlastního kódu. Ať se Vám daří! Autoři Obsah 9

1. Tvorba makra záznamem Co se v této kapitole naučíte: zaznamenání makra, absolutní a relativní odkaz v makru, různé způsoby spuštění maker, využití maker z jiného sešitu. 1.1 Použití maker v Excelu Makra jsou účinným prostředkem, jak si při práci s tabulkovým kalkulátorem zautomatizovat sérii operací, opakovaných několikrát za sebou. Sešit Excelu je schopen zaznamenat řadu akcí po sobě a podle potřeby tyto akce kdykoliv zopakovat. Tato schopnost Excelu vám ušetří spoustu práce a zabraňuje zbytečným chybám. Akce, prováděné po spuštění makra, si Excel zaznamená pomocí programovacího jazyka Visual Basic for Applications (VBA), jehož editor je součástí každého sešitu. Excel umožňuje vytvářet makra dvojím způsobem: Uživatelsky v sešitu zapnete zvláštní režim, který všechny provedené akce zaznamená pomocí kódu VBA a tento kód uloží jako součást sešitu. Programátorsky zobrazíte si editor jazyka VBA, ve kterém potřebný kód zapíšete z klávesnice. Je možné používat i kombinaci obou způsobů zaznamenat makro uživatelsky a později jej upravit přímým zápisem do kódu. Při uživatelském přístupu může makro obsahovat pouze akce, které jste schopni provádět i běžným způsobem a slouží tedy k úspoře práce se sešitem. Programátorský způsob tvorby maker poskytuje další možnosti: zpracovávat údaje na listu způsobem, který byl při uživatelské práci velmi pracný nebo nemožný; vytvářet nové vlastní funkce; spouštět automatické akce při otevření a zavření sešitu; vytvářet vlastní dialogová okna pro zadávání vstupních údajů. Se záznamem maker se seznámíte v této kapitole. Využití jazyka VBA je předmětem dalších kapitol. Pro práci s makry je nutné zobrazit si další kartu, zvanou Vývojář. Jestliže karta není zobrazena, postupujte takto: 1. Klepněte na kartu Soubor. 2. Vpravo dole klepněte na příkaz Možnosti. Tím se zobrazí okno, určené pro nastavení programu. 3. V levé části okna klepněte na příkaz Přizpůsobit pás karet. 4. V pravém seznamu označte volbu Vývojář a potvrďte tlačítkem OK. Toto nastavení Excelu je trvalé a při jeho příštím spuštění již bude karta Vývojář zobrazena. Tvorba makra záznamem 11

Obrázek č. 1.1: Přizpůsobení pásů karet v Excelu 2010 1.2 Záznam a spuštění makra K práci s makry jsou určena tlačítka na kartě Vývojář. Na kartě Zobrazit je také k dispozici tlačítko Makra, umožňující záznam a spuštění makra, práce s kartou Vývojář je však přehlednější. Obrázek č. 1.2: Karta Vývojář Pro záznam makra použijte tento postup: 1. Přejděte na kartu Vývojář. 2. Pomocí tlačítka Relativní odkazy určete, jak se má v makru zaznamenat pohyb kurzoru. Jestliže toto tlačítko stisknete, pohyb kurzoru se zaznamená relativně vůči výchozí buňce. Pokud jej ponecháte vypnuté, zaznamená se pevná adresa buňky, na kterou se kurzor během záznamu přemístil. 3. Klepněte na tlačítko Záznam makra. Nápis na tlačítku se změní na Zastavit záznam. 4. V zobrazeném okně vyplňte položku Název makra. Ke tvorbě názvu používejte písmena, číslice nebo podtržítko. Jiné znaky (mezera, čárka, pomlčka atd.) nejsou přípustné. 5. V seznamu Uložit makro do vyberte, kam se má vytvářené makro zapsat (viz dále). 6. Potvrďte tlačítkem OK. Tím spustíte záznam makra. 7. Proveďte jednotlivé kroky, které má makro obsahovat. 8. Klepněte na tlačítko Zastavit záznam. Tím se záznamový režim ukončí a se sešitem je možné normálně pracovat. 12 Programování v Excelu 2010 a 2013

Obrázek č. 1.3: Zapnutý a vypnutý relativní záznam V záznamovém režimu se uloží všechny akce prováděné Excelem, tedy i chyby, kroky zpět a automatická uložení. Při záznamu většinou nezáleží na tom, jak akci provedete: můžete použít tlačítko na kartě, místní nabídku nebo klávesový povel. Výjimkou je nastavení písma. Jestliže pro nastavení některého atributu písma použijete tlačítko nebo klávesový povel, do makra se zaznamená pouze nastavení změny na tučné. Pokud nastavíte písmo pomocí dialogového okna, do makra se uloží všechna nastavení, tedy i font, velikost, barva atd. bez ohledu na to, jestli se jedná o hodnoty výchozí nebo upravené. Obrázek č. 1.4: Okno pro záznam makra Uložení makra a vyzkoušení makra V seznamu Uložit makro do můžete vybrat tři možnosti, kam se bude vytvářené makro ukládat: Volba Tento sešit (výchozí) makro se ukládá do stejného sešitu, ve kterém byly zaznamenávané akce prováděny. Volba Nový sešit založí se nový prázdný sešit, do kterého se makro uloží. Volba Osobní sešit maker založí se speciální sešit s název Personal.xlsb, do kterého se vytvářené makro uloží. Pokud tento sešit již existuje, vytvářené makro se do sešitu přidá. Sešit Personal funguje tak, že se při každém dalším spuštění Excelu automaticky otevře jako skrytý. To vede k tomu, že všechna makra, uložená v tomto sešitu, jsou přístupná vždy po spuštění Excelu. Uložení makra v sešitu Personal (a tedy jeho zpřístupnění ve všech otevřených sešitech) může vést k nechtěnému spuštění makra. Ve Windows 7 je sešit Personal uložen ve složce C:\Documents and Settings\uživatelské jméno\data aplikací\ Microsoft\Excel\XLStart. Ve Windows 8 je sešit Personal uložen ve složce c:\users\ uživatelské jméno\appdata\roaming\microsoft\excel\xlstart\. Tvorba makra záznamem 13

Pro vyzkoušení makra klepněte na tlačítko Makra na kartě Vývojář, v zobrazeném okně označte vytvořené makro a klepněte na tlačítko Spustit. Po ukončení běhu makra je tlačítko Zpět, umístěné na panelu Rychlý přístup, znepřístupněno. To znamená, že akce provedené makrem jsou vždy nevratné. Obrázek č. 1.5: Seznam maker Uložení a otevření sešitu s makrem Excel rozlišuje dva typy sešitů: obyčejné sešity (přípona XLSX) a sešity s podporou maker (přípona XLSM). Při uložení sešitu se zaznamenaným makrem jej musíte uložit ve formátu XLSM. Při pokusu o uložení běžným způsobem se zobrazí varovné hlášení. Jestliže se pokusíte uložit sešit se zaznamenaným makrem ve formátu XLSX a přes varovné hlášení pokračujete v uložení, sešit se uloží, avšak zaznamenané makro se ze sešitu odstraní. Při otevření sešitu s makrem se nad řádkem vzorců zobrazí výstražné hlášení s tlačítkem Povolit obsah. Po klepnutí na tlačítko se sešit otevře. Excel 2010 a 2013 si toto povolení u sešitů s makrem pamatuje, takže při dalším otevření stejného sešitu se již hlášení nezobrazí a sešit se ihned otevře. Jestliže sešit přejmenujete nebo přesunete do jiného umístění, výstražné hlášení se objeví znovu. Obrázek č. 1.6: Povolení maker u Excelu Odstranění makra ze sešitu Nepotřebná nebo chybně pracující makra je záhodno ze sešitu odstranit, aby nedošlo k jejich nechtěnému spuštění. Klepnutím na tlačítko Makra zobrazte seznam maker, v seznamu označte konkrétní makro a použijte tlačítko Odstranit. Akce je jištěna zpětným dotazem a je nevratná. V dialogovém okně pro seznam maker je k dispozici také tlačítko Upravit. Toto tlačítko však neumožní opakovat záznam makra, ale zobrazí jeho kód, zapsaný v jazyce Visual Basic. 14 Programování v Excelu 2010 a 2013

1.3 Různé způsoby spuštění makra Spuštění makra ze seznamu není pro rutinní práci příliš pohodlné. Excel proto nabízí několik dalších způsobů, jak makra spouštět: klávesovou zkratkou, tlačítkem na panelu Rychlý přístup, tlačítkem na některé z karet, tlačítkem na listu. Spuštění makra klávesovou zkratkou Přiřazení klávesové zkratky makru je možné provést už při záznamu makra nebo dodatečně: 1. Tlačítkem Makra na kartě Vývojář zobrazte seznam maker a v něm označte potřebné makro. 2. Klepněte na tlačítko Možnosti. 3. Do položky Klávesová zkratka zapište písmeno, které spolu s klávesou Ctrl bude tvořit klávesovou zkratku. 4. Potvrďte tlačítkem OK. Obrázek č. 1.7: Přiřazení klávesové zkratky k makru Při zadávání klávesové zkratky se rozlišují malá a velká písmena. Jestliže do položky Klávesová zkratka zapíšete malé písmeno, klávesovou zkratkou bude klávesa Ctrl spolu s písmenem. Pokud zapíšete velké písmeno, klávesovou zkratkou bude kombinace Ctrl+Shift+písmeno. Pro klávesovou zkratku se třeba zvolit písmeno, které není použito ve standardních klávesových zkratkách Excelu. To je ovšem problém, protože tyto zkratky již vyčerpaly skoro celou abecedu. Klávesová zkratka Ctrl+Q, která spolehlivě fungovala v dřívějších verzích Excelu, není ve verzi 2013 použitelná, protože je rezervována pro rychlou analýzu dat. Řešením je použití velkých písmen, protože standardní klávesové zkratky Excelu používají vesměs malá písmena. V seznamu maker nejsou přiřazené klávesové zkratky zobrazeny, pro jejich zjištění musíte použít tlačítko Možnosti. Jestliže se pokusíte přiřadit tutéž klávesovou zkratku dvěma různým makrům v jednom sešitu, Excel nezobrazí žádné upozornění a duplicitní přiřazení provede. Tlačítko na panelu Rychlý přístup Přidání tlačítka pro spouštění makra na panel Rychlý přístup provedete následujícím způsobem: 1. Klepněte na kartu Soubor a vpravo dole klepněte na příkaz Možnosti. 2. V levé části zobrazeného okna klepněte na příkaz Panel nástrojů Rychlý přístup. 3. V seznamu Zvolit příkazy nastavte položku Makra. 4. Označte potřebné makro a klepněte na tlačítko Přidat. 5. V pravém seznamu označte přidané makro a klepněte na tlačítko Změnit. 6. V dalším zobrazeném okně vyberte vhodnou ikonu a podle potřeby upravte zobrazovaný název. Tento název se zobrazí u vytvořeného tlačítka jako bublinová nápověda. 7. Potvrďte dvakrát tlačítkem OK. Tvorba makra záznamem 15

Obrázek č. 1.8: Úprava panelu Rychlý přístup Takto vytvořené tlačítko bude na panelu Rychlý přístup zobrazeno při každém spuštění Excelu. Druhou možností je použít rozevírací seznam v pravé horní části okna a místo volby Pro všechny dokumenty (výchozí) nastavit volbu Pro dokument+název sešitu. V takovémto případě se tlačítko pro spuštění makra zobrazí na panelu Rychlý přístup jen při otevření sešitu, kde bylo makro vytvořeno. Obrázek č. 1.9: Změna ikony a názvu u tlačítka Přidání tlačítka na kartu Tlačítko pro spuštění makra můžete také přidat na některou z karet nebo si vytvořit kartu vlastní. Postupujte takto: 1. Klepněte na kartu Soubor a vpravo dole klepněte na příkaz Možnosti. 2. V levé části zobrazeného okna klepněte na příkaz Přizpůsobit pás karet. 3. Klepněte na tlačítko Nová karta. Tím se v pravém seznamu vytvoří nová karta a v ní nová skupina. 4. Označte postupně novou kartu a novou skupinu a pomocí tlačítka Přejmenovat zadejte vhodné názvy. 5. Označte novou skupinu. V rozevíracím seznamu Zvolit příkazy nastavte volbu Makra a tlačítkem Přidat zařaďte do skupiny nové tlačítko. 6. Označte vytvořené tlačítko a použijte tlačítko Přejmenovat. Vyberte ikonu a změňte název tlačítka. 7. Polohu nové karty můžete upravit pomocí tlačítek se šipkami nahoru a dolů. 8. Potvrďte tlačítkem OK. 16 Programování v Excelu 2010 a 2013

Obrázek č. 1.10: Přidání tlačítka na kartu Jestliže označíte některou se standardních karet a použijete tlačítko Nová skupina, do karty se zařadí nová prázdná skupina. Do této skupiny je možné přidávat popsaným způsobem nová tlačítka. U standardních skupin to možné není. Přidávání nových tlačítek do karet není omezeno jen na makra. V seznamu Zvolit příkazy je možné nastavit také jinou volbu, např. Příkazy mimo pás karet, a tím si libovolnou kartu doplnit tlačítky podle potřeby. Přidání tlačítka na list Tlačítko pro spouštění makra je možné vložit také na některý z listů. Postup je následující: 1. Na kartě Vývojář klepněte na šipku u tlačítka Vložit. Tím se zobrazí nabídka ovládacích prvků, které je možné na listu vytvářet. 2. V nabídce klepněte na tlačítko, umístěné v první řadě zcela vlevo (bublina Tlačítko (ovládací prvek formuláře). 3. V listu klepněte na místo, kde má být tlačítko umístěno. 4. Po klepnutí se zobrazí okno se seznamem maker. Označte potřebné makro a klepněte na tlačítko OK. Obrázek č. 1.11: Nabídka pro vytvoření ovládacího prvku na listu Pro úpravu tlačítka na něj klepněte pravým tlačítkem myši, z místní nabídky použijte příkaz Upravit text a přepište nápis na tlačítko. Jestliže na tlačítko klepnete pravým tlačítkem myši a poté použijete klávesu Esc, tlačítko zůstane ohraničeno úchyty obdobně jako označený obrázek. V tomto režimu je možné tahem za úchyty měnit velikost tlačítka, měnit jeho polohu (myší nebo klávesovými šipkami) a na kartě Domů nastavit tučné písmo nebo kurzívu. Tlačítko pro nastavení barvy písma je Tvorba makra záznamem 17

* nepřístupné. Je však možné na tlačítko klepnout pravým tlačítkem myši, z místní nabídky použít příkaz Formát ovládacího prvku a nastavit potřebnou změnu na kartě Písmo. Klávesou Delete se označené tlačítko z listu odstraní. 1.4 Spuštění makra v jiném sešitu Jestliže otevřete dva nebo více sešitů v jednom běhu Excelu, makro vytvořené v jednom z otevřených sešitů je možné spustit v kterémkoliv z otevřených sešitů. Ke spuštění můžete použít seznam maker (před názvem makra je v tomto případě zobrazen ještě název sešitu, oddělený vykřičníkem), klávesovou zkratku, tlačítko na panelu Rychlý přístup nebo tlačítko na některé z karet. Makro lze tímto způsobem spouštět i v sešitu bez podpory maker (přípona XLSX). Tímto způsobem také funguje zmíněný sešit Personal, který je otevřen automaticky jako skrytý. Pokud sešit s makrem otevřen není, seznam maker se zobrazí jako prázdný a nefunguje ani klávesová zkratka. Tlačítko na panelu Rychlý přístup a tlačítko na některé z karet, určené ke spouštění makra, však automaticky sešit s makrem otevřou a makro spustí. Protože jsou všechny akce provedené makrem nevratné, nechtěné spuštění makra může mít nepříjemné následky. Proto je často výhodnější používat ke spuštění makra tlačítko, umístěné přímo na listu. Mezi jazykem VBA v Excelu 2007, 2010 a 2013 není téměř žádný rozdíl. Proto lze makra, zaznamenaná v jedné verzi, zpravidla bez problémů spouštět ve verzi druhé. 18 Programování v Excelu 2010 a 2013

2. Tvorba uživatelských funkcí Co se v této kapitole naučíte: práci s editorem VBA, vytvoření uživatelské funkce a její využití, přidání nápovědy k vytvořené funkci, větvení výpočtu na několik částí, práci s proměnnými. Příklady v této kapitole naleznete v sešitu Uzivatelske_funkce.xlsm. 2.1 Práce s editorem Visual Basicu Makra, vytvářená záznamem, se v Excelu ukládají v programovacím jazyku Visual Basic for Applications (VBA). V tomto jazyku můžete vytvářet i vlastní kódy dvojího typu: uživatelské funkce (Function), které lze vkládat do buněk jako vzorce; procedury (Sub), které mají obdobné použití jako makra, vytvářená záznamem. Vytvářený kód se ukládá do programového modulu, který vytvoříte tímto způsobem: 1. Klepněte na záložku karty Vývojář. Obrázek č. 2.1: Karta Vývojář 2. Na této kartě klepněte na tlačítko Visual Basic. Tím si zobrazíte okno editoru VBA. 3. V tomto okně použijte příkaz Insert Module. 4. Klepněte do podokna Properties a vlastnost Name přepište na vhodné pojmenování (výchozí je Module1). 5. Klepněte do podokna modulu (vpravo). Tím je editor připraven k práci. Obrázek č. 2.2: Okno editoru VBA Tvorba uživatelských funkcí 19

Pro název modulu i všechny další názvy v editoru VBA (funkce, procedury, proměnné atd.) používejte pouze písmena bez české diakritiky, číslice nebo podtržítko. Nepoužívejte mezery a další interpunkční znaky. Práce v okně VBA Editor VBA vytvoří na hlavním panelu samostatné tlačítko. V okně editoru naleznete tři podokna: Podokno projektu (vlevo nahoře) obsahuje seznam listů v sešitu, seznam modulů (složka Modules), popř. seznam uživatelských formulářů. Jestliže chcete zobrazit kód některého z modulů, poklepejte na jeho název. Podokno Properties (vlevo dole) obsahuje u modulu pouze jeho název (Name). Hlavní použití tohoto podokna je při tvorbě formulářů. Okno kódu (vpravo) slouží k vlastnímu zápisu kódu. Editor VBA není počeštěn a vše je v angličtině. Tomu musíte přizpůsobit také zápis kódu: jako oddělovač desetinných míst používejte tečku (nikoliv čárku), jako oddělovač v seznamu používejte čárku (nikoliv středník). Tato pravidla platí v anglické i české verzi Excelu. Podokno kódu funguje obdobně, jako poznámkový blok. Jednotlivé příkazy ukončíte klávesou Enter; prázdné řádky jsou ignorovány. Klávesové zkratky Ctrl+C, Ctrl+X a Ctrl+V můžete použít ke zkopírování, vyjmutí a vložení označeného textu. Při rozdělení příkazu na dva řádky ukončete první část mezerou a podtržítkem a další řádek je pak chápán jako pokračování. Řádky uvozené apostrofem jsou komentáře a při provádění kódu se ignorují. Delší komentáře je možné rozdělit do více řádků pomocí mezery a podtržítka. Komentáře začínající apostrofem je také možno připsat za výkonný příkaz. Editor VBA zobrazuje zapsaný kód pomocí čtyř barev: modrou barvou klíčová slova jazyku Visual Basic, černou barvou názvy funkcí a proměnných, zelenou barvou komentáře, červenou barvou chybné řádky. Použití nápovědy Pro zobrazení okna nápovědy použijte příkaz Help Microsoft Visual Basic for Applications Help. Jestliže chcete zobrazit konkrétní nápovědu pro některý z příkazů jazyka VBA, označte jej jako blok a použijte klávesu F1. 2.2 Tvorba uživatelské funkce a její použití Vytvoření nové uživatelské funkce provedete těmito kroky: 1. V okně editoru VBA klepněte do podokna kódu. 2. Použijte příkaz Insert Procedure. 3. V zobrazeném okně označte volbu Function. 4. Vyplňte název funkce (Name). 5. Potvrďte tlačítkem OK. Obrázek č. 2.3: Vložení nové funkce do kódu VBA 20 Programování v Excelu 2010 a 2013

Tím se do okna kódu vloží první a poslední řádek kódu funkce: Public Function Nazev_funkce() End Function V jednom modulu lze vytvořit více funkcí a jejich kód je oddělen vodorovnou čárou. Funkce má zpravidla jeden nebo více vstupních parametrů. Zapíšete je do závorek v prvním příkazu funkce a oddělíte čárkami. Návrat vypočtené hodnoty zajistíte jejím dosazením do názvu funkce, což je nejčastěji předposlední příkaz v kódu funkce: Nazev_funkce = 20 Jako návratovou hodnotu lze použít číslo, text (v uvozovkách), datumovou hodnotu, proměnnou nebo vzorec. Pro tvorbu vzorců použijete běžná znaménka +, -, *, /, ^, popř. kulaté závorky. V kódu funkce můžete používat i další proměnné, sloužící jako mezivýsledky. Na rozdíl od vzorců v Excelu však Visual Basic nepovoluje používat procenta. Např. funkce pro výpočet DPH by mohla vypadat takto: Public Function DPH(castka) vysledek = castka * 0.2 DPH = vysledek End Function Použití uživatelské funkce Vytvořenou funkci můžete vyzkoušet přímo v okně VBA. K tomu použijte příkaz View Immediate Window. V zobrazeném ladícím okně zapište otazník, název funkce a hodnoty parametrů v závorkách. Řádek ukončete klávesou Enter. Na dalším řádku se objeví výsledek. Obrázek č. 2.4: Okno Immediate Window pro kontrolu vytvořené funkce Uživatelskou funkci vložíte do buňky stejným způsobem jako standardní funkci Excelu a v okně pro vložení funkce zvolíte skupinu Vlastní. Uživatelské funkce se však nezobrazují ve skupině Naposledy použité. Obrázek č. 2.5: Vložení uživatelské funkce do buňky Tvorba uživatelských funkcí 21

Vzorce v buňkách, využívající vlastní funkce, se po změně vstupní hodnoty automaticky přepočítají. Jestliže změníte kód funkce, přepočet se neprovede a musíte si jej vynutit klávesou F9. Přidání nápovědy k uživatelské funkci Uživatelskou funkci můžete opatřit také stručnou nápovědou: 1. Na kartě Vývojář klepněte na tlačítko Makra. 2. Do položky pro název makra zapište název funkce. 3. Klepněte na tlačítko Možnosti. 4. V dalším zobrazeném okně zapište do položky Popis text nápovědy a potvrďte tlačítkem OK. 5. Zavřete okno se seznamem maker. 2.3 Větvení kódu Uživatelské funkce často využívají několika variant výpočtu. Větvení kódu je možné provést dvěma různými způsoby: podmíněným příkazem If a přepínačem Select. Podmíněný příkaz Jednoduchý podmíněný příkaz má tvar: If <podmínka> Then <příkazy> End If Jako podmínku použijete libovolný výraz, nabývající hodnot True nebo False (pravda nebo nepravda). Při zápisu podmínek použijete relační operátory <, <=, >, >=, popř. rovnítko. Výraz nerovná se zapište jako <>. Příkazů, prováděných v závislosti na podmínce, může být i více. Takto zapsaný podmíněný příkaz má jednu větev, tj. zapsané příkazy se v závislosti na podmínce provedou, nebo ne. Druhou možností je podmíněný příkaz se dvěma větvemi, u kterého se provede jedna ze dvou sekvencí příkazů: If <podmínka> Then <příkazy1> Else <příkazy2> End If Je-li podmínka splněna, provedou se příkazy číslo 1, není-li splněna, příkazy číslo 2. Příklad: If Vstupni_hodnota < 100 Then Nazev_funkce = Vstupni_hodnota * 0.2 Else Nazev_funkce = Vstupni_hodnota * 0.1 End If Obrázek č. 2.6: Přidání nápovědy k uživatelské funkci Příkazy, prováděné v závislosti na podmínce, je vhodné odsadit trochu doprava; kód je přehlednější. Všechna klíčová slova Visual Basicu lze psát malými písmeny, velká počáteční písmena doplní editor automaticky. 22 Programování v Excelu 2010 a 2013

Podmínka v příkazu If může být složena z několika výrazů, spojených operátory And (obě podmínky platí současně) nebo Or (platí aspoň jedna z obou podmínek). U třech a více výrazů je potřeba uvážit, že operátor And svazuje výrazy těsněji než operátor Or. Například podmínku Parametr1 je větší než 10 a zároveň je Parametr2 roven dvěma nebo třem zapíšete takto: If Parametr1>10 And (Parametr2 = 2 Or Parametr2 = 3) Then Pokud byste podmínku zapsali bez závorek, tedy použili výraz If Parametr1>10 And Parametr2 = 2 Or Parametr2 = 3 Then interpretovala by se jako Budˇje Parametr1 větší než 10 a zároveň je Parametr2 roven dvěma, nebo je Parametr2 roven třem. Podmínku je možné také zapsat do logické proměnné, která pak obsahuje hodnotu True nebo False podle toho, zdali je podmínka splněna, nebo ne. Předchozí příklady by bylo možno tedy zapsat také takto: podmínka = Parametr1>10 And (Parametr2 = 2 Or Parametr2 = 3) If podmínka Then Podmíněný příkaz If umožňuje použít i více větví: If Vstupni_hodnota < 100 Then Nazev_funkce = Vstupni_hodnota * 0.2 ElseIf Vstupni_hodnota < 1000 Then Nazev_funkce = Vstupni_hodnota * 0.1 Else Nazev_funkce = Vstupni_hodnota * 0.05 End If Příkaz If s více větvemi funguje tak, že jakmile je nějaká podmínka splněna, provedou se odpovídající příkazy a další větve se již nezkoumají. Proto musíte dbát na správné pořadí podmínek: jestliže v podmínkách používáte operátor <, musíte jednotlivé varianty psát zezdola nahoru, pokud používáte operátor >, tak seshora dolů. Přepínač Jestliže je zapotřebí rozdělit výpočet na několik větví v závislosti na hodnotě jedné proměnné, je možné použít příkaz Select, který má tento tvar: Select Case <proměnná> Case <výraz1> <příkazy1> Case <výraz2> <příkazy2> Case Else <poslední příkazy> End Select Do výrazu pro podmínky se již název proměnné nepíše, konkrétní hodnota znamená rovnost (znaménko = není třeba zapisovat). Poslední větev, uvozená klauzulí Case Else, se provede tehdy, jestliže není splněna ani jedna z předchozích podmínek. Při použití příkazu Select by předchozí příkaz vypadal takto: Select Case Vstupni_hodnota Case Is < 100 Tvorba uživatelských funkcí 23

Nazev_funkce = Vstupni_hodnota * 0.2 Case Is < 1000 Nazev_funkce = Vstupni_hodnota * 0.1 Case Else Nazev_funkce = Vstupni_hodnota * 0.05 End Select Klíčové slovo Is není třeba zapisovat, editor jej doplní automaticky. Příkaz Select funguje obdobně jako příkaz If s více větvemi, a proto je třeba dbát na správné pořadí podmínek. Vytvořte funkci, počítající odměnu exekutora z vymáhané částky tímto způsobem: Částka je menší než 3 miliony: 15 % Částka je mezi 3 a 40 miliony: 10 % pro částku nad 3 miliony + 450 000 Částka je mezi 40 a 50 miliony: 5 % pro částku nad 40 milionů + 4 150 000 Částka je mezi 50 a 250 miliony: 1 % pro částku nad 50 milionů + 4 650 000 Částka je nad 250 milionů: 6 650 000 Minimální výše odměny bez ohledu na vymáhanou částku činí 3 000. V sešitu Uzivatelske_funkce.xlsm je tato funkce vytvořena pod názvem Odmena_exekutora. 2.4 Deklarace proměnných Proměnné, používané jako vstupní parametry funkce nebo jako mezivýsledky mohou obsahovat celá nebo desetinná čísla, textové řetězce, datum nebo hodnoty True a False (Ano/Ne). Typ proměnné se určí při prvém dosazení hodnoty nebo je možné určit jej dopředu pomocí deklarace proměnné. Deklaraci zapíšete příkazem: Dim <proměnná> As <typ> Jestliže zapíšete klauzuli As a mezeru, editor VBA nabídne kontextové menu, ze kterého je možné potřebný typ vybrat klepnutím myší. Hledání v nabídce usnadňuje zápis prvního písmena. Obrázek č. 2.7: Kontextová nabídka editoru VBA Deklaraci proměnné je možné provést na libovolném místě kódu před jejím prvým použitím. Hodnota, dosazovaná do deklarované proměnné, musí odpovídat deklarovanému typu. Pokud tomu tak není, nastane chyba. Visual Basic je však schopen v některých případech převést text na odpovídající hodnotu, např. příkazy Dim pocet as Integer pocet = "200" budou fungovat správně. 24 Programování v Excelu 2010 a 2013

Tabulka č. 2.1: Základní typy proměnných Typ Význam Rozsah hodnot Byte Celé číslo 0 až 255 Integer Celé číslo -32 768 až 32 767 Long Celé číslo ± 2 147 483 647 Single Desetinné číslo ± 3,4.10 38 Double Desetinné číslo ± 1,79.10 308 Currency Měna Přibližně ± 9 bilionů String Text Date Datum Boolean True False Příkaz Dim může obsahovat více deklarací, ale nemůže deklarovat několik proměnných stejného typu najednou. Tedy příkaz Dim kod1, kod2 as Integer je chybný a musíte zapsat příkaz Dim kod1 as Integer, kod2 As Integer. Deklaraci pomocí klauzule As je možné zapsat i do prvého příkazu funkce a deklarovat vstupní parametr jako proměnnou daného typu: Public Function Lhuta_splatnosti(datum_vystaveni As Date) Jestliže na začátek modulu (před zápis prvé funkce nebo makra) zapíšete příkaz Option Explicit, všechny používané proměnné musí být deklarovány, jinak editor VBA ohlásí chybu. Editor VBA můžete nastavit tak, aby se uvedený příkaz vložil automaticky na začátek každého modulu: 1. Použijte příkaz Tools Option. 2. Klepněte na záložku prvé karty Editor. 3. Označte volbu Require Variable Declaration a potvrďte tlačítkem OK. Obrázek č. 2.8: Volby editoru VBA Tvorba uživatelských funkcí 25

Rozsah proměnných Všechny proměnné jsou lokální v rámci kódu (funkce nebo makra), kde jsou používány. Mimo tento kód neexistují. Je tedy možné používat např. ve dvou různých funkcích dvě proměnné se stejným názvem. Jestliže na začátek modulu zapíšete příkaz Public <název proměnné>, je takto deklarovaná proměnná společná pro celý sešit, tj. všechny moduly. Obdobně příkaz Static deklaruje proměnnou, která je uvnitř funkce nebo makra lokální, avšak po ukončení kódu si svou hodnotu zachová. Obyčejné proměnné po ukončení kódu svou hodnotu ztrácí. Uživatelskou funkci můžete využívat nejen v buňkách, ale také v kódu VBA, tedy v dalších funkcích nebo makrech. Jestliže v prvním řádku kódu funkce nahradíte klauzuli Public klauzulí Private, funkce bude existovat pouze v rámci programového modulu, kde byla zapsána. Jinde ji použít nelze a její název nebude zobrazen v okně pro vložení funkce do buňky. Příklad: Private Function DPH_lokalni_v_modulu(castka) DPH_lokalni_v_modulu = castka * 0.2 End Function Proměnné s indexem Ve Visual Basic můžete používat také proměnné, obsahující několik hodnot. Potřebnou část proměnné určíte pomocí celočíselného indexu. Jako hodnotu indexu můžete také použít proměnnou nebo aritmetický výraz. Indexovanou proměnnou je nutné vždy deklarovat a v deklaraci určit povolený rozsah indexu, např.: Dim sazby_dph(1 To 2) sazby_dph(1) = 0.1 sazby_dph(2) = 0.2 vypoctena_dph = vstup * sazby_dph(2) Proměnná může mít i více indexů a jejich rozsah může obsahovat libovolné celé číslo, např.: Dim promenna(1 To 5, -2 To 2) Pro vytvoření indexované proměnné obsahující konstanty je možné použít také příkaz Array, který má tvar: promenna = Array(hodnota1, hodnota2, ) Tímto jediným příkazem nahradíte deklaraci Dim a potřebné dosazovací příkazy. Indexování proměnné, vytvořené příkazem Array, se počítá od nuly. Výpočet DPH by potom vypadal takto: sazby_dph = Array(0.1, 0.2) vypoctena_dph = vstup * sazby_dph(1) Automatické indexování od nuly je nezvyklé a často vede k chybám. Ve Visual Basic je však velmi rozšířené a je třeba si na něj zvyknout. 26 Programování v Excelu 2010 a 2013

Vytvořte funkci, která počítá rovnoměrný odpis pro zadanou hodnotu investice a odpisovou skupinu. V prvním roce se odepisuje určený podíl, v dalších letech poměrná část zbytku. Pro jednotlivé odpisové skupiny jsou doby odpisu 4, 6, 12, 20 a 30 let a podíly pro výpočet odpisu v prvém roce jsou 14,2 %, 8,5 %, 4,3 %, 2,15 % a 1,4 %. V sešitu Uzivatelske_funkce.xlsm je tato funkce vytvořena pod názvem Odpis_rovnomerny. 2.5 Textové a datumové hodnoty V kódu funkcí a maker je možné používat také textové hodnoty, uváděné v uvozovkách: mesic = "leden" Pro sloučení dvou textů použijte znak & nebo znaménko sčítání: obdobi = mesic+" 2010" Při slučování textů nezapomeňte na oddělovací mezery. Často potřebujete určit délku textu, obsaženého v textové proměnné. Visual Basic disponuje standardní funkcí Len, jejímž parametrem je textová proměnná a výsledkem je počet znaků v řetězci. Je-li řetězec prázdný, funkce vrátí nulu. Vytvořte funkci, která sloučí předčíslí, číslo účtu a směrový kód banky. Předčíslí bude odděleno pomlčkou, směrový kód lomítkem. Předčíslí může být i prázdný řetězec. V sešitu Uzivatelske_funkce.xlsm je tato funkce vytvořena pod názvem Cislo_uctu. Datumové hodnoty se zapisují ve tvaru #měsíc/den/rok# : datum = #3/1/2010# Jiný způsob zápisu vede k chybám. Jestliže proměnnou předem deklarujete jako datumovou, je možné do této proměnné dosadit také text obsahující datum v českém formátu. Text se automaticky převede na datumovou hodnotu: Dim datum As Date datum = "1.3.2010" K datumové hodnotě je možné přičítat nebo od ní odečítat zadaný počet dnů. Odečtením dvou datumových hodnot od sebe získáte počet dnů mezi nimi. Aktuální datum vrací funkce Date (bez parametrů), např.: datum_splatnosti = Date+15 Pořadové číslo dne v týdnu určí funkce Weekday, která je obdobou známé funkce DEN.TÝDNE. Prvým parametrem funkce je datumová hodnota, jako druhý parametr použijte dvojku nebo konstantu vbmonday, aby se týden počítal od pondělí: cislo_dne = Weekday(Date, vbmonday) Tvorba uživatelských funkcí 27

Vytvořte funkci, která pro zadané datum vrátí zkratku názvu dne v angličtině (Mon, Tue, Wed atd.). V sešitu Uzivatelske_funkce.xlsm je tato funkce vytvořena pod názvem Den_textem. 2.6 Další možnosti funkcí Ve funkcích je možné používat také nepovinné parametry, uvozené klauzulí Optional. Za název parametru zapíšete přiřazení výchozí hodnoty: Public Function Vypocet(castka, Optional clo = 0.12) Pokud při vkládání funkce do buňky vynecháte druhý parametr, použije se hodnota 0,12. Nepovinné parametry musí být zapsány jako poslední. Funkce může také vracet několik hodnot najednou. Výsledkem vzorce, obsahujícím tuto funkci, je maticový vzorec, zabírající dvě nebo více buněk vedle sebe. Pro vložení této funkce označíte potřebné buňky, vyhledáte potřebnou funkci a vložení potvrdíte s podrženými klávesami Ctrl+Shift. Při tvorbě tohoto typu funkce nejprve deklarujte indexovanou proměnnou o potřebném počtu složek. Návratové hodnoty zapište do jednotlivých částí této proměnné a do názvu funkce dosaďte tuto proměnnou jako celek (bez indexu): Public Sub Vraci_dve_hodnoty(vstup) Dim vysledek(1 To 2) vysledek(1) = vstup * 2 vysledek(2) = vstup * 4 Vraci_dve_hodnoty = vysledek End Sub Vytvořte funkci, která počítá DPH a cenu s DPH ze zadané ceny a sazby DPH. Sazba DPH je nepovinná, výchozí hodnota je 20 %. V sešitu Uzivatelske_funkce.xlsm je tato funkce vytvořena pod názvem DPH. 28 Programování v Excelu 2010 a 2013

3. Tvorba makra kódem a jeho spuštění Co se v této kapitole naučíte: vytvoření jednoduchého makra a jeho spuštění, základní odkazy na buňky a oblasti, práce s objektovými proměnnými, použití funkcí Visual Basicu. Příklady k této kapitole naleznete v sešitu Tvorba_makra.xlsm. 3.1 Tvorba makra pomocí kódu Kromě uživatelských funkcí, probraných v předchozí kapitole, je možné vložit do programového modulu také kód makra. Na rozdíl od funkce makro nevrací hodnotu, ale provádí jednorázovou akci. Vytvoření makra v kódu VBA provedete takto: 1. Klepněte na kartu Vývojář. 2. Na této kartě klepněte na tlačítko Visual Basic. Tím si zobrazíte okno s editorem VBA. 3. Klepněte do okna s kódem modulu (pokud sešit ještě neobsahuje programový modul, vytvořte jej). 4. Použijte příkaz Insert Procedure. 5. V zobrazeném okně ponechte volbu Sub. 6. Vyplňte název makra. Pro název makra platí stejná pravidla, jako pro název uživatelské funkce: používejte písmena bez diakritiky, číslice nebo podtržítko. 7. Klepněte na tlačítko OK. Do programového kódu se vloží obdobné řádky, jako při tvorbě funkce, klíčové slovo Function je nahrazeno klíčovým slovem Sub. Do kódu makra nyní zapíšete potřebné výkonné příkazy. Jako zkoušku můžete použít příkaz MsgBox následovaný textem v uvozovkách, což zobrazí na monitoru zapsaný text v dialogovém okně: Public Sub zkusebni_makro() MsgBox "Toto je moje první makro!" End Sub Obrázek č. 3.1: Okno pro vložení nového makra Jako argument příkazu MsgBox můžete použít nejen text v uvozovkách, ale také proměnnou. Jakmile kód makra narazí na příkaz MsgBox, zobrazí aktuální hodnotu této proměnné. Této možnosti využijete zejména při ladění maker. Tvorba makra kódem a jeho spuštění 29

Vytvořené makro můžete spustit stejně jako makro vytvořené uživatelsky, tedy tlačítkem Spustit v okně se seznamem maker, klávesovou zkratkou, tlačítkem na panelu Rychlý přístup, tlačítkem na některé z karet nebo tlačítkem umístěným na listu. Další možností je spuštění makra přímo z editoru VBA: postavte kurzor do kódu makra a na panelu nástrojů klepněte na tlačítko Run s obrázkem zelené šipky. Po provedení makra se zobrazí opět okno editoru VBA. Obrázek č. 3.2: Nástrojový panel v editoru VBA Obrázek č. 3.3: Hlášení při chybě makra Pokud po spuštění makra nastane chyba, Excel zobrazí okno s chybovou zprávou. Klepnutím na tlačítko End běh makra ukončíte. Klepnutím na tlačítko Debug zobrazíte okno editoru VBA a řádek, ve kterém běh makra zhavaroval, je zvýrazněn žlutým pozadím (v obrázku 3.4 podšeděná část textu). Obrázek č. 3.4: Kód VBA v režimu Debug Tímto zobrazením editor VBA signalizuje speciální chybový režim, ve kterém můžete kód makra opravovat, ale nemůžete makro znovu spustit. Pro opětovné spuštění opraveného makra nejprve klepněte na tlačítko Reset s ikonou modrého čtverečku. Obrázek šipky a žluté pozadí příkazu zmizí a editor VBA se přepne do standardního režimu, umožňujícího spouštění maker. 3.2 Odkazy na buňky a oblasti Prakticky všechna makra pracují s buňkami. Na jednotlivé buňky a oblasti se kód VBA může odkazovat několika různými způsoby. Základní odkazy na buňky Pro aktivní buňku použijte odkaz ActiveCell. Například příkaz ActiveCell = 100 vloží do označené buňky číslo 100. Pro určitou buňku, bez ohledu na pozici kurzoru, použijte odkaz Range. Parametrem odkazu Range je adresa nebo předem vytvořený název buňky. Parametr zapíšete do závorek a s uvozovkami. Místo textové hodnoty můžete použít i proměnnou, která text s adresou nebo názvem buňky obsahuje: Range("B2") = Date promenna = "B2" Range(promenna) = 100 Range("obec") = "Praha" 30 Programování v Excelu 2010 a 2013

Prvé tři příkazy zapisují do buňky B2 na aktivním listu, poslední příkaz do buňky s uvedeným názvem. Adresu buňky, zapisovanou v příkazu Range, můžete také spojit s názvem listu pomocí vykřičníku (obdobně jako při tvorbě vzorců): Range("Souhrn!B2") = Date Také toto použití odkazu Range umožňuje zapisovat na neaktivní list. Excel umožňuje vytvářet také názvy, platné pouze na jednom listu. Takto vytvořený název můžete v odkazu Range použít pouze tehdy, je-li list s vytvořeným názvem aktivní, jinak makro skončí chybou. Třetím způsobem je odkaz Cells(řádek, sloupec), kde jako parametry použijete pořadové číslo řádku nebo sloupce. Kromě čísel je v tomto odkazu možné použít i proměnné a výrazy: Cells(radek, sloupec + 3) = 15.8 Všechny uvedené odkazy mohou figurovat také jako proměnné na pravé straně přiřazovacího příkazu nebo v podmíněném příkazu If, např.: If Range("B2") > 0 Then ActiveCell = Range("celkem") / Range("B2") End If Odkaz Range je použitelný i na konkrétní oblast. Příkaz Range("B2:C10") = 1 vyplní uvedenou oblast jedničkami. Pro zápis různých hodnot do oblasti je možné využít příkaz Array: Range("A1:D1") = Array("Název", "Datum", "Cena", "Počet") Na označenou oblast buněk se odvoláte odkazem Selection: Selection = 1 Jestliže je označena jediná buňka, odkazy ActiveCell a Selection fungují stejně. Při označení oblasti odkaz Selection představuje všechny označené buňky, zatímco odkaz ActiveCell buňku v levém horném rohu označené oblasti. Příkaz cyklu V makru je často potřeba provést příkaz nebo sled příkazů několikrát po sobě. Typickým příkladem je zpracování sloupce buněk po řádcích. K tomu slouží příkaz cyklu, jehož obecná struktura je následující: For <proměnná cyklu> = <počáteční hodnota> To <konečná hodnota> Step <krok> <příkazy cyklu> Next <proměnná cyklu> Tvorba makra kódem a jeho spuštění 31

Proměnná cyklu se mění od počáteční hodnoty a příkazy cyklu se provádí opakovaně, až proměnná cyklu dosáhne konečné hodnoty. Všechny zadávané hodnoty musí být celočíselné. Jestliže je krok cyklu roven jedné, klauzuli Step a hodnotu kroku lze vynechat. Např. potřebujete otestovat buňky ve druhém sloupci od řádku 3 do řádku 20. Je-li číslo v buňce záporné, do buňky ve třetím sloupci se zapíše slovo ztráta : For radek = 3 To 20 If Cells(radek, 2) < 0 Then Cells(radek, 3) = "Ztráta" End If Next radek End Sub Při zpracování sloupce údajů není často předem známý počet zpracovávaných buněk. Jedním ze způsobů, jak tento problém vyřešit, je použít jako horní parametr cyklu dostatečně velké číslo a běh cyklu předčasně ukončit, jakmile se narazí na prázdnou buňku. K předčasnému ukončení cyklu slouží příkaz Exit For, který se v cyklu provede, jestliže je splněna vhodná podmínka. Samotný obsah buňky však k tomuto testu není vhodný, protože Excel chápe jako nulu nejen prázdnou buňku, ale také buňku, ve které je nula zapsána nebo vznikla jako výsledek vzorce. Proto použijte funkci Len, která vrací počet znaků, ze kterých je údaj v buňce zapsán. U prázdné buňky vrátí tato funkce nulu. Příkaz cyklu zapište tedy např. takto: For radek = 3 To 20000 If Len(Cells(radek, 2)) = 0 Then Exit For End If <Příkazy cyklu> Next radek End Sub Kromě cyklu For je v jazyce VBA k dispozici ještě cyklus Do, který horní mez cyklu nepotřebuje a opakování příkazů jednoduše ukončí podle zadané podmínky. Ukončovací podmínku můžete vyjádřit dvěma různými způsoby, kterým odpovídají dvě varianty příkazu Do. První varianta příkazu Do má obecný tvar: Do While <podmínka> <příkazy cyklu> Loop Příkazy cyklu se provádí tak dlouho, dokud je zapsaná podmínka plněna. Jakmile podmínka splněna není, cyklus je ukončen. Jestliže podmínka není splněna ani na začátku cyklu, příkazy cyklu se neprovedou vůbec. Druhá varianta příkazu Do má tvar: Do Until <podmínka> <příkazy cyklu> Loop V tomto případě probíhá cyklus tak dlouho, dokud podmínka splněna není. Jakmile je podmínka splněna, práce cyklu se ukončí. Řádek Loop označuje ukončení cyklu. Příkazem Exit Do je možné provést předčasné ukončení cyklu, a to bez ohledu na platnost podmínky, uvedené v řádku Do. Proměnná, použitá pro test platnosti, nemusí být celočíselná. Aby se proměnná cyklu pravidelně měnila, je třeba do cyklu zapsat potřebný příkaz, např. 32 Programování v Excelu 2010 a 2013

parametr = parametr + 0.5 a před spuštěním cyklu musíte do této proměnné zapsat vhodnou počáteční hodnotu. Při použití příkazu Do je zpravidla zapotřebí testovat podmínku uvnitř cyklu, před vykonáním vlastních výkonných příkazů. Nová hodnota proměnné cyklu se totiž testuje až při dalším průchodu cyklem. Jestliže proměnná cyklu již podmínce nevyhovuje, výkonné příkazy se ještě jednou provedou a teprve potom se cyklus ukončí. Uvedený cyklus For, zapsaný pomocí příkazu Do, by mohl vypadat takto: delka = 1 radek = 2 Do While delka > 0 radek = radek+1 delka = Len(Cells(radek, 3)) If delka > 0 Then <Příkazy cyklu> End If Loop Popřípadě takto: delka = 1 radek = 2 Do Until delka = 0 radek = radek+1 delka = Len(Cells(radek, 3)) If delka > 0 Then <Příkazy cyklu> End If Loop U cyklu Do sice nemusíte odhadovat horní parametr cyklu, musíte se však postarat o to, aby proměnná cyklu měla nastavenu správnou počáteční hodnotu a správnou změnu kroku. Při chybném zápisu může cyklus Do skončit v nekonečné smyčce. 3.3 Standardní funkce Visual Basicu V kódu maker a funkcí je možné používat řadu standardních funkcí jazyka VBA. V předchozím textu jste poznali funkce Date, Weekday a Len. K dalším často používaným funkcím patří funkce popsané v této podkapitole. Podmíněný výraz Funkce IIf funguje jako podmíněný výraz a má tři parametry: podmínku, návratovou hodnotu v případě splněné podmínky a návratovou hodnotu pro případ, kdy podmínka splněna není. Jako návratovou hodnotu můžete použít číslo, text (v uvozovkách) nebo vzorec, např.: promenna = IIf(Range("B2") < 1000, 20, 0.03* Range("B2")) Funkce pro práci s texty Funkce Left odřezává zadaný počet znaků zleva. Prvým parametrem funkce je textová hodnota uložená v proměnné nebo buňce s textem, druhým počet znaků, který se má odříznout: Tvorba makra kódem a jeho spuštění 33

Range("B2")= Left(promenna, 4) Funkce Right má stejné parametry a odřezává zadaný počet znaků zprava. Funkce Mid vyjme zadaný počet znaků z textové hodnoty. Parametry jsou textová hodnota, pořadové číslo prvého vyjímaného znaku a počet znaků, které se mají vyjmout. Jestliže poslední parametr vynecháte, vyjmou se všechny znaky od zadané polohy až do konce: Range("B2")= Mid(promenna, 4, 2) Funkce InStr určí polohu zadaného znaku nebo skupin znaků v textové hodnotě. Parametry funkce jsou pořadové číslo znaku, od kterého se má hledání provádět, textová hodnota a hledaný řetězec. Jestliže se zadaný řetězec v textové hodnotě nevyskytuje, funkce InStr vrátí nulu, jestliže se v textové hodnotě vyskytuje několikrát, vrátí polohu prvého výskytu. Příklad: poloha = InStr(1, m_text, "/") Funkce Replace nahrazuje v textové hodnotě jeden řetězec druhým. Prvým parametrem funkce je textová hodnota, druhým hledaný řetězec a třetím řetězec, kterým se náhrada provádí. Jestliže textová hodnota hledaný řetězec neobsahuje, nahrazení se neprovede. Následující příkaz nahradí v buňce všechny středníky čárkami: Range("B2")= Replace(Range("B2"),"; ", ",") Velice užitečnou funkcí je Trim, která odstraní z textové hodnoty nadbytečné mezery zleva a zprava (mezery uvnitř textu zůstanou). Funkce UCase převede textový řetězec na velká písmena: Range("B2")= UCase(Range("B2")) Obdobně funguje funkce LCase, která převádí textový řetězec na malá písmena. Funkce StrReverse obrátí text tak, že poslední znak je na začátku a naopak. Výsledkem příkazu Range("B2")= StrReverse("Excel") je text lecxe. Pomocí této funkce můžete vyřešit řadu problémů, například nalézt poslední výskyt zadaného řetězce v delším textu. Převodní funkce Pro převod čísla na textovou hodnotu použijte funkci Str. Výsledkem je textový řetězec, který má na počátku mezeru. Tuto nadbytečnou mezeru je zpravidla vhodné odstranit pomocí funkce Trim, např.: ActiveCell = Trim(Str(Range("B2"))) Jestliže použijete funkci Str pro převod desetinného čísla, výsledný text obsahuje desetinnou tečku. Pro převod desetinného čísla na řetězec, obsahující desetinnou čárku, použijte funkci Format. Opačný převod textového řetězce na číslo provádí funkce Val. Převáděný text musí obsahovat desetinnou tečku. Jestliže je zapsán s desetinnou čárkou, znaky za čárkou se při převodu ignorují a výsledkem je celočíselná hodnota. Proto je nutné nahradit v převáděném textu čárku tečkou pomocí funkce Replace: 34 Programování v Excelu 2010 a 2013

ActiveCell = Val(Replace(Range("B2"), ",", ".")) Pro převod textového řetězce datum použijte funkci CDate, např.: datum_text= "12.2.2010" ActiveCell = CDate(datum_text) Funkce Format Tato funkce převádí číselnou nebo datumovou hodnotu na textový řetězec v zadaném formátu. Můžete použít tři parametry: Expression je převáděná hodnota. Format je formátovací kód, zapsaný v uvozovkách. FirstDayOfWeek (nepovinný parametr) je prvý den v týdnu. Pro týden od pondělka do neděle použijte číslo 2. Formátovací kód se píše podle stejných pravidel, jako při tvorbě uživatelského formátu v Excelu. Je však třeba používat americkou notaci: tečku jako oddělovač desetinných míst, čárku jako oddělovač tisíců, pro zápis roku používat písmeno y. Například: p = 2546.2598 Range("B1") = Format(p, "#,##0.00") Range("B2") = Format(Date, "d.m.yyyy") Funkce Format navíc umožňuje ještě použít kód q (čtvrtletí) a ww (pořadové číslo týdne v roce). U posledního formátování je třeba použít třetí parametr. Datumové funkce Při práci s datumovými hodnotami jsou užitečné funkce Day, Month a Year. Jejich parametrem je datumová hodnota, výsledkem pořadové číslo dne, měsíce nebo roku: aktualni_mesic = Month(Date) Opakem je funkce DateSerial, která z pořadových čísel roku, měsíce a dne vytvoří datumovou hodnotu. Následující příkaz zapíše do aktuální buňky datum 26. ledna 2013: ActiveCell = DateSerial(2013, 1, 26) Meze indexované proměnné Při použití indexovaných proměnných (viz předchozí kapitola) je někdy zapotřebí zjistit nejvyšší a nejnižší přípustnou hodnotu indexu. K tomu slouží funkce LBound (dolní mez) a UBound (horní mez). Například u kódu promenna1 = Array(2, 8, 12, 19) dolni = LBound(promenna) horni = UBound(promenna) se do proměnné dolni zapíše nula, do proměnné horni číslo tři. Tvorba makra kódem a jeho spuštění 35

Tabulka č. 3.1: Důležité funkce Visual Basicu Funkce pro výpočet Název funkce Návratová hodnota Parametry IIf Dvě různé hodnoty podle podmínky Podmínka, hodnota nebo výraz pro True, hodnota nebo výraz pro False Abs Absolutní hodnota Číselná hodnota Datumové funkce Název funkce Návratová hodnota Parametry Date Aktuální datum Datumová hodnota WeekDay Pořadové číslo dne v týdnu Datumová hodnota, první den týdne (2) Day Pořadové číslo dne Datumová hodnota Month Pořadové číslo měsíce Datumová hodnota Year Pořadové číslo roku Datumová hodnota Textové funkce Název funkce Návratová hodnota Parametry Left Odřezává znaky zleva Textová hodnota, počet znaků Right Odřezává znaky zprava Textová hodnota, počet znaků Mid Vyjímá zadaný počet znaků Textová hodnota, poloha prvního znaku, počet znaků Instr Poloha jednoho řetězce ve druhém Pořadové číslo prvého znaku, textová hodnota, hledaný řetězec Trim Odřezává nadbytečné mezery Textová hodnota Replace Náhrada jednoho řetězce druhým Textová hodnota, hledaný řetězec, nahrazovaný řetězec UCase Převod textu na velká písmena Textová hodnota LCase Převod textu na malá písmena Textová hodnota StrReverse Otočení textu Textová hodnota Převodní funkce Název funkce Návratová hodnota Parametry Str Převod čísla na text Číselná hodnota Val Převod textu na číslo Textová hodnota CDate Převod textu na datum Textová hodnota DateSerial Datumová hodnota Pořadová čísla roku, měsíce a dne Format Převod čísla nebo datumu na text Hodnota, formát, první den týdne (2) Vytvořte makro, které na listu Zápis do buněk v sešitu Tvorba_makra.xlsm zjistí z textů ve sloupci C čísla účtů a směrové kódy bank (jsou odděleny lomítkem) a zapíše je do sloupců D a E. Jestliže text neobsahuje lomítko, směrový kód banky se nezapíše. V sešitu Tvorba_makra.xlsm je toto makro vytvořeno pod názvem Cyklus_pro_zapis. Vytvořte makro, které na listu Využití funkce STRREVERSE v sešitu Tvorba_makra. xlsm zjistí z textů ve sloupci C poslední část textu, oddělenou pomlčkou, a zapíše ji do sloupce D. Jestliže text neobsahuje pomlčku, do sloupce D se zapíše celý původní text. V sešitu Tvorba_makra.xlsm je toto makro vytvořeno pod názvem Posledni_cast_textu. 36 Programování v Excelu 2010 a 2013

3.4 Objektový model Excelu Jednotlivé součásti sešitu Excelu (buňky, listy, grafy atd.) se v jazyku VBA označují souhrnným názvem objekty. Objektem je také sešit a dokonce i samotný běh Excelu. Je zřejmé, že různé typy objektů jsou vnořeny do sebe: sešit obsahuje listy, list buňky. Obrázek č. 3.5: Hierarchie objektů Série objektů stejného typu se označuje jako kolekce. List tedy obsahuje kolekci buněk, sešit kolekci listů. Jazyk VBA umožňuje pracovat s kolekcí jako s celkem nebo s jejími jednotlivými členy. Např. všechny buňky na listu tvoří kolekci Cells, zatímco odkaz Cells(řádek, sloupec) se odvolává na jeden člen této kolekce, charakterizovaný číslem řádku a sloupce. S objekty a jejich kolekcemi je možné manipulovat dvojím způsobem: nastavením vlastnosti objektu a spuštěním metody. Vlastnost objektu uchovává jeho trvalé nastavení. Změnu vlastnosti provedete příkazem: Odkaz na objekt.název vlastnosti = Hodnota vlastnosti Naproti tomu metoda provádí jednorázovou akci s objektem a syntaxe příkazu je následující: Odkaz na objekt.název metody Řada metod vyžaduje zadání jednoho nebo více parametrů; jejich hodnoty zapíšete za název metody a oddělíte je čárkou: Odkaz na objekt.název metody parametr1, parametr2, Jestliže zapíšete odkaz na objekt (např. ActiveCell nebo Range) a tečku, editor VBA zobrazí kontextovou nabídku, ze které potřebnou vlastnost nebo metodu vyberete klepnutím myší. Názvy vlastností jsou označeny ikonou s rukou a listem papíru, názvy metod zeleným kvádrem. Obrázek č. 3.6: Kontextová nabídka Editor VBA nezobrazuje kontextovou nabídku u odkazu Cells s číslem řádku a sloupce a u odkazu Selection. Tvorba makra kódem a jeho spuštění 37