Doprovodná pomoc Clearing Podporované zaměstnávání pro mladé
makra Automatizace práce - IT lektor MS Office | … Makra.pdf · Je nutné poznamenat, že se...
-
Upload
truongdiep -
Category
Documents
-
view
222 -
download
0
Transcript of makra Automatizace práce - IT lektor MS Office | … Makra.pdf · Je nutné poznamenat, že se...
Microsoft Excel - makra
Automatizace práce v MS Excel v. 2007 - 2016
Jaroslav Nedoma
O KURZU
Automatizace práce v MS Excel
Vítáme Vás na IT semináři věnujícím se problematice maker (automatizaci úloh) v nejrozšířenějším
tabulkovém kalkulátoru na světě, v aplikaci Microsoft Excel.
Autor má za cíl provést čtenáře co možná nejjednodušší cestou přes úskalí tohoto programu. Měli
bychom si na školení ukázat řadu zjednodušujících cest, které vedou mnohdy na to stejné místo jako
dlouhá krkolomná řešení. Pravidlo zní, stručně, jasně a výstižně seznámit čtenáře s každou kapitolou.
Skripta Vás provedou spoustou zajímavých kapitol. Budeme se věnovat tvorbě maker od úplného
začátku a projdeme spolu tedy například rozdíly mezi absolutním a relativním záznamem makra,
tvorbou podmínek, cyklů a naučíme se tak vytvářet vlastní makra také pomocí programovacího
prostředí Visual Basic for Applications.
Je nutné poznamenat, že se nejedná o zcela vyčerpávající materiál, ale pouze o doprovodná skripta
ke školení. Předpokládá se tedy, že po absolvování školení budete schopni tato skripta využít na 100 %
bez sebemenší překážky spolu s upřesňujícími poznámkami pořízenými na semináři.
O AUTOROVI
Jaroslav Nedoma
IT lektor Microsoft Office Jaroslav Nedoma úspěšně proškolil ke konci roku 2016 přes 5 500 osob
v 7 000 hodinách výuky. Školením se zabývá od roku 2009, kdy začínal jako lektor kancelářského balíčku
MS Office 2003. Dnes školí zaměstnance firem výhradně pro práci s verzemi MS Office 2013 a 2016.
Jako lektor IT kurzů MS Office proškolil přes 100 velkých a malých firem v rámci celé ČR.
Účastníci kurzů různých věkových skupin se pod vedením pana Nedomy naučili ovládat kancelářské
programy Word, Excel, Outlook, Access nebo PowerPoint a prakticky využívat všechny funkce, které jim
pomáhají řešit úkoly nejen v zaměstnání, ale i v domácnosti a volném čase. Zaměstnavatelé oceňují
zvýšení kvalifikace i efektivity jejich zaměstnanců.
Veškeré připomínky, dotazy, nápady k obsahu těchto skript směřujte přímo na autora přes následující
kontakty:
mob.: +420 724 782 336
e-mail: [email protected]
web: www.lektornedoma.cz
OBSAH
Proč makra? ..............................................................................................................................................5
Využití maker .......................................................................................................................................5
Prostředí MS Excel ....................................................................................................................................6
Karta Vývojář .......................................................................................................................................6
Zabezpečení maker .............................................................................................................................7
Uložení sešitů s makry .........................................................................................................................8
Záznam makra ..........................................................................................................................................9
Absolutní záznam ................................................................................................................................9
Relativní záznam ............................................................................................................................... 11
Smíšený záznam ............................................................................................................................... 11
Spuštění makra ...................................................................................................................................... 12
Dialogové okno ................................................................................................................................. 12
Klávesová zkratka ............................................................................................................................. 13
Ikona na panelu pro rychlý přístup .................................................................................................. 14
Vlastní tlačítko .................................................................................................................................. 16
Karta vlastních příkazů na pásu karet .............................................................................................. 19
Další možnosti .................................................................................................................................. 20
Prostředí VBA ........................................................................................................................................ 21
Spouštění editoru jazyka Visual Basic for Applications .................................................................... 21
Kde všude může být kód VBA ........................................................................................................... 22
Rozbor nahraných maker ................................................................................................................. 23
Hlavička makra.......................................................................................................................... 23
Komentáře ................................................................................................................................ 24
Zaznamenaná makra ................................................................................................................ 24
Okno Immediate ............................................................................................................................... 27
Krokování .......................................................................................................................................... 28
Základy jazyka VBA ................................................................................................................................ 29
Procedury ......................................................................................................................................... 29
Funkce .............................................................................................................................................. 30
Příkazy a jejich zápis ......................................................................................................................... 31
Názvy objektů, proměnných a konstant - pravidla .......................................................................... 31
Datové typy proměnných a konstant ............................................................................................... 32
Datový typ................................................................................................................................. 32
Rozsah platnosti a životnost ..................................................................................................... 33
Deklarace proměnných ............................................................................................................. 33
Datový typ String ...................................................................................................................... 33
Operátory ......................................................................................................................................... 34
Aritmetické operátory .............................................................................................................. 34
Relační operátory ..................................................................................................................... 34
Spojovací operátory .................................................................................................................. 35
Logické operátory ..................................................................................................................... 35
Rozhodovací bloky ............................................................................................................................ 36
Rozhodovací blok If-Then-Else .................................................................................................. 36
Cykly ................................................................................................................................................. 38
Cykly For – Next ........................................................................................................................ 38
Cykly Do While .......................................................................................................................... 39
Speciální makra Auto_Open a Auto_Close ....................................................................................... 41
Makro Auto_Open .................................................................................................................... 41
Makro Auto_Close .................................................................................................................... 41
MsgBox a InputBox ........................................................................................................................... 43
MsgBox ..................................................................................................................................... 43
InputBox ................................................................................................................................... 45
Praktická část ......................................................................................................................................... 47
Nejčastější klávesové zkratky v MS Excel .............................................................................................. 48
Speciální znaky při práci s MS Excel ...................................................................................................... 49
Závěr ...................................................................................................................................................... 50
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 5
PROČ MAKRA?
Na seminářích často padne jednoduchá otázka: „Proč vůbec makra?“ Já odpovídám rovněž otázkou:
„Provádíte v Excelu nějaké úlohy či úkony opakovaně? Nebo máte dojem, že děláte otrockou práci,
která spočívá ve stále stejných krocích?“ Většina účastníků odpovídá kladně, a to je důvod, proč se
makry v Excelu vůbec zabývat. Jednoduše si je představme jako něco, co nám dokáže zjednodušit
každodenní práci a ušetřit čas, který můžeme vynaložit na úplně jiné operace.
VYUŽITÍ MAKER
Makra využijeme, jak jsme si již vysvětlili v předchozím odstavci, k automatizaci opakujících se akcí
(úkolů), například k:
Otevírání sešitu, vytištění jeho části a následné uzavření.
Otevření více sešitů najednou, sloučení jejich obsahu do nového sešitu a jeho uložení.
Vytváření grafů.
Stejné formátování buněk.
Práce s listy (jejich vytváření, kopírování, odstraňování, …).
Tisk určité části sešitu.
Vytvoření vlastní funkce či příkazu.
Vytvoření celé nové aplikace (např. skladový systém, fakturační systém, jiný databázový
systém).
Slovo „databáze“ je třeba brát v Excelu spíše v uvozovkách, protože se nejedná o klasické databáze tak,
jak je známe z mnoha provázaných relačních struktur. Excel není pro tvorbu databázových systému
primárně určen, nicméně dají se v něm vytvářet menší aplikace, které eliminují nákup drahého
software. Výhoda Excelu je jasná – svou aplikaci si vždy přizpůsobíte svým požadavkům. Nevýhoda
spočívá v chybách, které „ladíme“ v rámci maker většinou delší dobu, než přijdeme na všechny cesty,
které potřebujeme v rámci správného chodu aplikace ošetřit.
Tato skripta se však nezabývají tvorbou komplexních aplikací v rámci maker Excelu. Na kurzu se dozvíte
vše podstatné o makrech a o jejich nasazení při každodenní práci. Pamatujte, že ze základů a krátkých
jasných maker vznikají právě rozsáhlé aplikace. Složitá makra nejsou nic jiného než spojení několika
menších maker.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 6
PROSTŘEDÍ MS EXCEL
Než se ve skriptech dostaneme k praktickým příkladům, budeme se věnovat části, která nás připraví
na práci s makry v prostředí MS Excel.
KARTA VÝVOJÁŘ
Abychom mohli v Excelu s makry pracovat, je zapotřebí vyvolat na pásu karet kartu Vývojář
následovně:
1. Klepneme na kartu Soubor.
2. V levé části zvolíme volbu Možnosti.
3. Zobrazí se dialogové okno, ve kterém:
a. Zvolíme možnost Přizpůsobit pás karet (viz Obr. 1).
b. V pravé části okna zatrhneme položku Vývojář (viz Obr. 1).
c. Klepneme na tlačítko OK (viz Obr. 1).
Obr. 1 Zobrazení karty Vývojář na pásu karet
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 7
Karta Vývojář nás bude zajímat hlavně v její levé části – tedy konkrétně skupina příkazů nazvaná jako
Kód (Obr. 2). Obsahuje důležité nástroje, které nás budou provázet během celého kurzu. Jsou jimi:
Visual Basic – prostředí sloužící pro úpravu kódu VBA (dostaneme se k němu, až budeme
upravovat již zaznamenaná makra nebo když budeme vytvářet makra sami právě
v programovacím jazyce VBA).
Makra – jedná se o místo, ze kterého je možné naše makra spouštět. V tomto okně je rovněž
umožněno upravit základní vlastnosti makra.
Zaznamenat makro – nástroj, který umožní záznam makra (relativně i absolutně – viz dále).
Použít relativní odkazy – umožní při záznamu makra použít relativní odkazy (například
při kniknutí na buňku A1 se nezaznamená adresa buňky A1 (absolutní záznam), ale relativní
pozice buňky A1 od předchozí aktivní buňky. Jinými slovy, pokud budeme mít kurzor v buňce
B5 a v rámci záznamu makra klikneme do buňky A1, makro si zaznamená, že byl proveden
posun o jeden sloupec doleva a o čtyři řádky nahoru.).
Zabezpečení maker – viz následující kapitola.
Obr. 2 Karta Vývojář - skupina Kód
ZABEZPEČENÍ MAKER
V rámci maker lze přechovávat také škodlivé programy, které mohou ohrozit Váš počítač. Je důležité si
rozmyslet, jak se má Excel zachovat v momentě, kdy otevíráme sešit s makry. Toto chování lze nastavit
následovně:
1. Na kartě Vývojář ve skupině Kód klepneme na tlačítko Zabezpečení maker (Obr. 3).
2. Zobrazí se dialogové okno, ve kterém klepneme na tlačítko Nastavení maker a v pravé části
okna zvolíme požadovaný stupeň zabezpečení (viz Obr. 4):
a. Zakázat všechna makra bez oznámení.
b. Zakázat všechna makra s oznámením.
c. Zakázat všechna makra kromě digitálně podepsaných maker.
d. Povolit všechna makra (nedoporučuje se – viz odstavec výše).
Obr. 3 Zabezpečení maker
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 8
Obr. 4 Stupeň zabezpečení maker
ULOŽENÍ SEŠITŮ S MAKRY
Jestliže do sešitu zaznamenáme nebo naprogramujeme makra, musíme tento sešit uložit do formátu
Sešit aplikace Excel s podporou maker (s příponou *.xlsm):
1. Klepneme na kartu Soubor.
2. V levé části klikneme na položku Uložit jako.
3. Sešit aplikace Excel s povolenými makry.
4. Zobrazí se dialogové okno, ve kterém:
a) Vybereme složku, do které chceme sešit uložit.
b) Do řádky Název souboru vložíme název sešitu.
c) Na řádku Uložit jako typ zvolíme možnost Sešit aplikace Excel s podporou maker
(jedná se o příponu *.xlsm).
d) Klepneme na tlačítko Uložit.
Pozor – pokud omylem uložíte soubor, který obsahuje makra, s příponou *.xlsx, o makra byste přišli.
Nicméně pokud jste ještě dotyčný soubor nezavřeli, je možné udělat nápravu a přes volbu Uložit jako
tento soubor znovu uložit, tentokráte správně s koncovkou *.xlsm. Pokud však soubor zavřete a bude
uložen chybně, zpět svá makra již nedostanete a vše budete muset opakovat znovu. Proto dávejte
dobrý pozor na to, jak soubor s makry ukládáte. Pro nováčky v oblasti maker je toto jedna
z nejdůležitějších vědomostí.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 9
ZÁZNAM MAKRA
Záznam je jednodušší cestou k vytvoření vlastního makra bez složitých znalostí programování.
Při nahrávání maker je zaznamenávána veškerá činnost, kterou v Excelu provádíte. Pro nahrávání
maker má Excel vestavěn zvláštní záznamník. Excel nahrává všechny akce myši, stisk kláves, vyvolané
příkazy, otevřené dialogy atp. Kdybychom měli záznam jednoduše připodobnit, tak bychom mohli
vycházet např. z nahrávání filmu z televize. Film nahrajete a kdykoliv si ho můžete zpětně pustit – to
samé děláme v rámci maker.
Způsoby záznamu:
Absolutně – jestliže vyberete nějakou buňku, bude si Excel pamatovat její přesnou adresu.
Relativně – zaznamenává posun (např. o dvě buňky vpravo).
ABSOLUTNÍ ZÁZNAM
V této části bychom mohli vytvořit naše první makro, které bude mít za úkol vypsat pod sebe do buněk
názvy dní v týdnu s tím, že první bude vždy v buňce A1. Všimněte si, že v zadání požadujeme, abychom
začali s vyplňováním v konkrétní buňce, čili bude se jednat o absolutní záznam makra.
Postup při absolutním záznamu:
1. Na kartě Vývojář, ve skupině Kód, klikneme na nástroj Zaznamenat makro (Obr. 5).
Obr. 5 Zaznamenat makro
2. Vyplníme okno pro nové makro (Obr. 6):
a. Název makra – nejdůležitější část – podle názvu budeme makro spouštět
(např. Dny_v_tydnu). Název by měl být výstižný, nesmí obsahovat mezery ani žádné
speciální znaky kromě podtržítka („_“), kterým většinou nahrazujeme mezeru mezi
slovy. Diakritika v názvu je povolené, nicméně doporučením je diakritiku nepoužívat,
abyste předešli komplikacím v rámci VBA prostředí (hlavně při přenosu aplikace mezi
jazykovými mutacemi).
b. Klávesová zkratka – je nepovinná, ale pokud již nyní víte, že budete makro využívat
každou chvíli, můžete si tak urychlit práci při běžném používání. Jen pozor na to, že
tyto zkratky budou v daném dokumentu prioritní, tedy pokud použijete klávesovou
zkratku, kterou v současnosti používáte k jiné operaci, již nebude fungovat a nahradíte
jí touto novou funkcionalitou Vašeho makra. Doporučuji používat klávesu Shift, kterou
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 10
rozšíříte klávesovou zkratku na „trojhmat“ (Ctrl + Shift + „něco“). Díky tomu většinou
předejdeme chybné definici s nahrazením známé klávesové zkratky.
c. Uložit makro do – zde máme tři možnosti. Buď zaznamenáváme makro pro používání
v tomto sešitě, nebo chceme vytvořit makro do nového prázdného sešitu, nebo
chceme, abychom mohli na svém počítači používat makro ve všech Excelovských
sešitech, zvolíme možnost „Osobní sešit maker“.
d. Popis – jedná se pouze o komentář, který je však vhodný v situace, kdy má s makry
pracovat někdo jiný než my, kterému komentář pomůže v orientaci toho, co vlastně
makro dělá. Zároveň jsou komentáře vhodné, když vytváříme desítko maker a těžko se
pak orientujeme v tom, jaké makro máme zrovna použít.
Obr. 6 Nové makro
3. Klikneme na tlačítko OK a v tuto chvíli se spustí záznam makra. Nyní bychom tedy měli klikat
pouze tam, jak to požadujeme v budoucnu od makra a zároveň psát pouze to, co má
v budoucnu makro psát. Nic víc, nic míň.
4. Zaznamenáme tedy makro:
a. Klikneme do buňky A1, zapíšeme „Pondělí“.
b. Klikneme do buňky A2. zapíšeme „Úterý“.
c. Takto budeme postupovat do neděle.
5. Ukončíme záznam makra (Zastavit záznam ve skupině Kód na kartě Vývojář) - Obr. 7.
Obr. 7 Zastavit záznam
6. Makro je na světě .
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 11
V dalších kapitolách si ukážeme, jak makro spustit. Nyní ještě přejdeme k relativnímu záznamu,
abychom poté mohli jednotlivé záznamy porovnat.
RELATIVNÍ ZÁZNAM
V některých případech budete chtít, aby vaše makro pracovalo s umístěním buněk v relativním smyslu.
Například v reakce na naše předchozí makro budeme chtít vytvořit více použitelné makro, a to v tom
smyslu, že se začnou dny v týdnu vyplňovat od souřadnice buňky, ve které budeme mít kurzor (bude
aktivní). V takovém případě budete potřebovat záznam makra s relativními odkazy na buňky.
Postup při relativním záznamu:
1. Nejprve aktivujeme určitou buňku, např. D1.
2. Na kartě Vývojář, ve skupině Kód, klikneme na nástroj Použít relativní odkazy (Obr. 8Obr. 5).
Tímto jsme aktivovali relativní záznam.
Obr. 8 Použít relativní odkazy
3. Pokračujeme stiskem nástroje Zaznamenat makro (Obr. 5).
4. Opět vyplníme okno nového makra (Obr. 6). S názvem např. Dny_v_tydnu_2.
5. Klikneme na OK.
6. Zaznamenáme makro:
a. Klikneme na stejnou buňku, kterou jsme označili v kroku 1. Toto je důležitá operace.
Pokud bychom toto nerespektovali a klikli například do buňky F10 a začali psát den
v týdnu, makro by si v tuto chvíli zaznamenalo posun od buňky D1 (o 2 sloupce vpravo
a o 9 řádků níže), ve které jsme měli kurzor před záznamem makra, a to by způsobilo
takový efekt, že při každém spouštění našeho makra v budoucnosti by makro začalo
vypisovat dny ne do buňky, ve které máme kurzor, ale do buňky právě o 9 řádků níže
a o 2 sloupce vpravo.
b. Zapíšeme „Pondělí“.
c. Přesuneme se do buňky níže a zapíšeme „Úterý“.
d. Takto budeme postupovat do neděle.
7. Ukončíme záznam makra (Zastavit záznam ve skupině Kód na kartě Vývojář) - Obr. 7.
SMÍŠENÝ ZÁZNAM
Smíšený záznam v rámci záznamníku maker zkrátka neexistuje. Musíme si tedy dopředu vybrat,
zda bude makro absolutní (odkazující se na přesné pozice) či relativní (ve vztahu k aktivnímu
buňkovému kurzoru).
Nahrané makro je však možné rozebírat v rámci editoru VBA, ke kterému se dostaneme později
a v rámci tohoto prostředí je možné makra upravovat se znalostí programovacího nástroje VBA.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 12
SPUŠTĚNÍ MAKRA
V předchozí kapitole jsme si ukázali, jak makro zaznamenat a nyní přichází čas na to, abychom si
předvedli, jaké jsou možnosti pro spouštění makra.
DIALOGOVÉ OKNO
Jako první možnost si předvedeme spuštění makra z dialogového okna Makra (Obr. 10) – nástroj
najdeme na kartě Vývojář ve skupině Kód (Obr. 9).
Obr. 9 Nástroj makra
V dialogovém okně vidíme všechna makra, která jsme zaznamenali (u nás zatím dvě). Tato makra
můžeme spouštět (kliknutím na tlačítko Spustit), upravovat (v prostředí VBA – viz kapitola o prostředí
VBA), odstranit (kliknutím na tlačítko Odstranit) či měnit klávesovou zkratku nebo popis makra
(kliknutím na tlačítko Možnosti…) - Obr. 11.
Obr. 10 Dialogové okno Makra
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 13
Obr. 11 Možnosti makra
Nyní spustíme naše první makro Dny_v_tydnu. Když makro spustíte, v listě, na kterém se nacházíte se
v oblasti A1:A7 objeví seznam našich 7 dní.
Vyzkoušejte, co se stane, když kliknete například do buňky C10 a spustíte toto makro znovu. Opět se
seznam vepíše do stejných buněk A1:A7 – toto je princip absolutního makra.
Nyní spusťme makro Dny_v_tydnu_2. Makro bude vypisovat dny v týdnu počínaje buňkou, ve které se
nachází Váš kurzor. Kliknete-li do buňky C10, budou dny v týdnu v buňkách C10:C16. Když kliknete
do buňky D55, dny budou v buňkách D55:D61 atd. Toto je naopak princip relativních maker, která se
vztahují k pozici kurzoru.
Nyní si myslím, že je rozdíl mezi absolutním a relativním makrem pochopený a můžeme přejít k dalším
možnostem spouštění maker kromě dialogového okna Makra.
KLÁVESOVÁ ZKRATKA
Klávesová zkratka tvoří druhou možnost, jak makro spustit. Výhodou je, že nemusíme klikat po kartách
a příkazech a přímo stiskneme klávesovou zkratku, která přísluší danému makru. Nevýhodou
samozřejmě je, že si zkratky musíte pamatovat .
Naše absolutní makro spustíme stiskem klávesové zkratky Ctrl + Shift + D. Je hotovo, dny jsou
v buňkách A1:A7.
Relativní makro spustíme stiskem klávesové zkratky Ctrl + Shift + F (zkratka, kterou jsem použil
při tvorbě druhého makra).
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 14
IKONA NA PANELU PRO RYCHLÝ PŘÍSTUP
Další možností, jak makro spustit, je využít panel nástrojů pro rychlý přístup (Obr. 12). Tak říkají
v Microsoftu řádku s ikonami, který naleznete většinou nad pásem karet (nad kartami Soubor, Domů,
Vložení, …).
Obr. 12 Panel nástrojů Rychlý přístup
Na tento panel lze přidat vlastní ikonu, která bude spouštět naše makro. Musíme postupovat
následovně:
1. Na konci panelu nástrojů Rychlý přístup (Obr. 12) je šipka směřující dolů – na tu klikneme.
2. Z nabídky zvolíme Další příkazy… (Obr. 13)
Obr. 13 Další příkazy...
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 15
3. V dialogovém okně v části Zvolit příkazy z vybereme možnost Makra (Obr. 14).
Obr. 14 Zvolit příkazy z: Makra
4. Nyní se nám zobrazí seznam našich maker. Budeme chtít pracovat například s relativním
makrem, takže klikneme na makro s názvem Dny_v_tydnu_2 a ve střední části okna klikneme
na volbu Přidat. Tím se makro zařadí mezi ikony do pravé části a to znamená, že se stane
součástí panelu Rychlý přístup (Obr. 16).
5. Nyní ještě na naše makro v pravé části klikneme a dole zvolíme volbu Změnit… (Obr. 16).
6. V okně (Obr. 16), které se otevře, vybereme ikonu, kterou budeme chtít pro naše makro
využívat a v dolní části okna ještě naše makro pojmenujeme tak, aby bylo jasné, co makro
dělá. Jedná se o popis, který se zobrazí formou tzv. „bubliny“, když na ikonu v Excelu
najedeme myší.
7. Vše potvrdíme tlačítky OK.
8. Máme hotovo, naše makro je připravené k použití a stačí ho vyzkoušet. Klikneme do jakékoliv
buňky a následně na ikonu našeho makra (Obr. 15) – v tu chvíli vidíme seznam dní v týdnu.
Obr. 15 Ikona domečku nyní spouští makro dní v týdnu
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 16
Obr. 16 Zařazení makra na panel nástrojů a ikona s názvem
VLASTNÍ TLAČÍTKO
Abychom nemuseli spouštět makro přes nástroj Makra na kartě Vývojář, nebo abychom makro
nepřidávali na panel nástrojů Rychlý přístup jako ikonu v přechozím případě, můžeme tuto činnost
přenechat tlačítku či jinému objektu, který se nachází přímo v listě. Tato metoda se používá zejména
pro makra, která se váží k tabulce či formuláři, u kterého tato tlačítka jsou – např. přidat, seřadit,
vytisknout, odstranit atd.
Byť se výpis dní v týdnu k této verzi obsluhy nehodí, jedná se o jednoduchý příklad, na kterém toto
budeme demonstrovat. V praxi se však tlačítka využívají ve vztahu k již zmíněným formulářům atp.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 17
Postup pro vytvoření vlastního tlačítka a přiřazení makra k němu:
1. Vytvoříme tlačítko či jiný objekt:
a. Na kartě Vložení ve skupině Ilustrace klikneme na nástroj Obrazce (Obr. 17).
Obr. 17 Karta Vložení, skupina Ilustrace, nástroj Obrazce
b. Následně vybereme jeden z obrazců připomínající tlačítko (např. obdélník) - Obr. 18.
Obr. 18 Vkládání obrazce
c. Objekt vložíme do listu Excelu – stačí kliknout, levé tlačítko myši držet a tahem
nakreslit obrazec. Tlačítko myši pustíme, na tlačítko napíšeme název a máme hotovo
(Obr. 19).
Obr. 19 Tlačítko v listě (neaktivní × aktivní)
2. Pokud nemáme nově nakreslený obrazec aktivní (tedy neobsahuje viditelné úchyty pro změnu
velikosti), klikneme na něj (Obr. 19).
3. Jestliže je objekt vybrán, klikneme na něj pravým tlačítkem myši.
4. V místní nabídce vybereme příkaz Přiřadit makro (Obr. 20).
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 18
Obr. 20 Přiřadit makro tlačítku
5. V zobrazeném okně (Obr. 21) klikneme na název makra, které chceme přiřadit k danému
objektu a následovně výběr potvrdíme tlačítkem OK.
Obr. 21 Přiřadit makro objektu
6. Nyní můžeme tlačítko vyzkoušet – funguje – spouští dané makro.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 19
KARTA VLASTNÍCH PŘÍKAZŮ NA PÁSU KARET
Jedna z dalších možností je vytvořit si pro vlastní makra novou kartu mezi dosavadními (Domů, Vložení,
Vývojář, …).
Toho docílíme následovně:
1. Klikneme pravým tlačítkem myši např. na kartu Domů a z místní nabídky vybereme příkaz
Přizpůsobit pás karet… (Obr. 22).
Obr. 22 Místní nabídka – Přizpůsobit pás karet…
2. Následně v pravé části okna (Obr. 23) vytvoříme novou kartu kliknutím na tlačítko Nová karta.
Tuto kartu si můžeme pojmenovat (např. Moje makra). V rámci karty se vytvářejí skupiny
(vytvoříme skupina s názvem Dny v týdnu).
Obr. 23 Přizpůsobit pás karet
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 20
3. V levé části vybereme ze seznamu (Obr. 24) v sekci Zvolit příkazy z: volbu Makra.
Obr. 24 Zvolit příkazy z - Makra
4. Nyní můžeme jednotlivá makra přesouvat do naší skupiny vždy označením názvu makra
a stiskem tlačítka Přidat ve středové části okna. Tím se jednotlivé příkazy přesunou do naší
skupiny Dny v týdnu. Následně lze přiřadit ikonu či přejmenovat událost tlačítkem
Přejmenovat.
5. Stiskem tlačítka OK okno potvrdíme a zavřeme.
6. Výsledek vidíme přímo před sebou na pásu karet v podobě nové karty s naším jménem Moje
makra. Zatím obsahuje jednu skupinu se jménem Dny v týdnu a ta obsahuje dvě tlačítka
spouštějící naše dvě makra (Obr. 25).
Obr. 25 Karta Moje makra
DALŠÍ MOŽNOSTI
Mezi další možnosti, jak makro spustit, patří spuštění přímo z programovacího kódu jiného makra,
což lze provést v prostředí VBA, o kterém bude řeč v následující kapitole.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 21
PROSTŘEDÍ VBA
Jedná se o editor, který má uživatelům usnadnit zápis a úpravu kódu makra v programovacím jazyce
VBA (Visual Basic for Application). V rámci tohoto editoru můžeme provádět drobné změny v již
nahraných makrech nebo rovnou vytvořit úplně nové makro v programovacím jazyce VBA.
SPOUŠTĚNÍ EDITORU JAZYKA VISUAL BASIC FOR APPLICATIONS
Do prostředí editoru VBA (Obr. 26) se z Excelu dostaneme stiskem kláves Alt + F11 či kliknutím
na nástroj Visual Basic na kartě Vývojář ve skupině Kód (Obr. 27). Je možné využít také cestu přes
seznam maker (Obr. 10), kde si vybereme konkrétní makro a následně klikneme na Upravit. Rovněž se
dostaneme do prostředí editoru VBA.
Obr. 26 Editor jazyka VBA
Obr. 27 Nástroj Visual Basic
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 22
Pokud vidíte okno editoru VBA jinak než na Obr. 26, je možné, že nemáte zobrazena všechna podokna
tak, jako v tomto případě. Vždy stačí kliknout na nabídku View (Obr. 28) a zjistit, zda máte zobrazeny
dvě nejdůležitější podokna:
Project Explorer – zde jsou vidět projekty a v nich moduly, ve kterých budeme ukládat makra.
Properties Window – okno vlastností – týká se spíše objektů při práci s tvorbou aplikací
(formuláře, tlačítka a jiné prvky).
Dále se hodí ještě dvě podokna:
Immediate Window – okno pro testování příkazů v reálném čase a možnost provést konkrétní
událost bez potřeby spouštět celé makro (viz dále v kapitole Okno Immediate).
Locals Window – okno pro sledování lokálních proměnných – hodí se při testování kódu makra
– při jeho rozboru, tzv. krokování – viz dále v těchto materiálech.
Obr. 28 Zobrazení podoken
KDE VŠUDE MŮŽE BÝT KÓD VBA
V modulech kódu pro jednotlivé listy - může obsahovat speciální procedury, vázané
na konkrétní list, jež jsou spouštěny při výskytu nějaké události.
V modulu kódu ThisWorkbook může obsahovat speciální makra, která se automaticky spustí
při otevření sešitu, před jeho vytištěním nebo před uzavřením.
V modulech tříd – složka Modules.
Ve formulářích.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 23
ROZBOR NAHRANÝCH MAKER
Máme spuštěný editor, v okně kódu vidíme naše nahraná makra a konečně tedy můžeme prozkoumat,
čím se navzájem liší a jak vlastně takový programový kód vypadá.
Abychom se dostali ke kódu našich maker, musíme se v projektovém okně (Obr. 29) „proklikat“ nejprve
názvem projektu neboli sešitu (v mém případě VBAProject (Makra – skripta.xlsm)), dále rozklikneme
žlutou složku Modules a v ní Module1. Vpravo hned uvidíme obsah modulu, tedy naše dvě makra
v jazyce VBA.
Obr. 29 Project Explorer
Text maker má různé barvy (Obr. 26) – toto nám usnadňuje orientaci v programovém kódu.
Téměř vše je anglicky: na češtinu narazíte jen ve vlastních názvech maker a v komentářích.
Hlavička makra
Hlavičku makra tvoří dva řádky, které jsou v makru vždy. Je to první a poslední řádek (dvojice označená
Sub a End Sub). Za označením Sub je vždy název makra – jedná se o název, který jsme nadefinovali
před samotným záznamem makra.
Sub Dny_v_tydnu()
End Sub
Název makra (v našem případě Dny_v_tydnu) je vždy doplněn závorkami. Do nich se zapisují
tzv. formální parametry. Naše nahraná makra budou vždy bez parametrů.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 24
Komentáře
První řádky makra jsou zeleně. Tato barva je implicitní barvou komentářů – neboli té části makra, která
slouží jako nápověda a vysvětlivky. Komentáře se při vykonávání makra ignorují.
Začátek komentáře je vždy vyznačen znakem apostrofu.
V našem případě u makra Dny_v_tydnu je zřejmé, že se jedná o komentář, který popisuje, co makro
dělá a jakou klávesovou zkratku jsme makru přiřadili – kód viz níže.
'
' Dny_v_tydnu Makro
' Makro pod sebe vypíše dny v týdnu počínají buňkou A1.
'
' Klávesová zkratka: Ctrl+Shift+D
'
Zaznamenaná makra
V předchozích kapitolách jsme zaznamenávali absolutní a relativní makro, které mělo za úkol vypsat
názvy dní v týdnu. Nyní se podíváme, jak jsou tato makra uložena ve VBA.
Vygenerovaný kód Excelem při absolutním záznamu makra „Dny_v_tydnu“:
Sub Dny_v_tydnu()
Range("A1").Select
ActiveCell.FormulaR1C1 = "Pondělí"
Range("A2").Select
ActiveCell.FormulaR1C1 = "Úterý"
Range("A3").Select
ActiveCell.FormulaR1C1 = "Středa"
Range("A4").Select
ActiveCell.FormulaR1C1 = "Čtvrtek"
Range("A5").Select
ActiveCell.FormulaR1C1 = "Pátek"
Range("A6").Select
ActiveCell.FormulaR1C1 = "Sobota"
Range("A7").Select
ActiveCell.FormulaR1C1 = "Neděle"
Range("A1").Select
End Sub
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 25
Vysvětlení kódu:
V kódu se opakují prakticky dva řádky:
o Range(„A1“).Select – znamená, že chceme označit buňku A1 – totéž pro další obdobné
řádky.
o ActiveCell.FormulaR1C1 = „Pondělí“ – znamená, že chceme do aktivní buňky zapsat
slovo Pondělí a jiné dny u dalších řádků.
Z opakujících řádků vyplývá, že jsme jen klikali a psali. Ale zamysleme se nad tím. Chceme, aby
po spuštění makro klikalo nebo zapisovalo? No přeci zapisovalo. Ukážeme si tedy, jak
zefektivnit tento kód tak, aby byl co nejkratší a přesto dělal to, co do teď:
Sub Dny_v_tydnu()
Range("A1") = "Pondělí"
Range("A2") = "Úterý"
Range("A3") = "Středa"
Range("A4") = "Čtvrtek"
Range("A5") = "Pátek"
Range("A6") = "Sobota"
Range("A7") = "Neděle"
End Sub
V makru se nyní již neopakuje zbytečné klikání a zároveň je i jasněji pochopitelné. Zkrátka říká,
co chceme do které buňky napsat.
Takto jednoduše provedete v makru jakoukoliv úpravu. Úpravy navíc není třeba ukládat. Makro jen
znovu spustíte a hned bude využívat nový, Vámi upravený, kód.
Vygenerovaný kód Excelem při relativním záznamu makra „Dny_v_tydnu_2“:
Sub Dny_v_tydnu_2()
ActiveCell.FormulaR1C1 = "Pondělí"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "Úterý"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "Středa"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "Čtvrtek"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "Pátek"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "Sobota"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "Neděle"
ActiveCell.Offset(-5, 0).Range("A1").Select
End Sub
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 26
Vysvětlení kódu:
V kódu se opět opakují dva řádky, ale tentokráte se liší:
o ActiveCell.FormulaR1C1 = „Pondělí“ – tento řádek je s absolutním záznamem makra
shodný. Opět říká, aby program zapsal název dne do aktivní buňky – tedy do té,
ve které je aktuálně kurzor.
o ActiveCell.Offset(1, 0).Range(„A1“).Select – tento řádek vždy označí buňku, která je
o jeden řádek níže než aktuálně. Stará se o to příkaz Offset – ten říká o kolik řádků
a o kolik sloupců se chceme posunout z aktuálního místa. Příkaz Range(„A1“) v tomto
případě neznamená, že pracujeme s údajem v buňce A1, což je možná matoucí. Časem
zjistíte, že tuto část kódu záznamník vkládá automaticky, ale v našem případě není
potřeba. Makro si prakticky vytváří buňku A1 jako levý horní roh aktuální oblasti.
A protože nemáme žádnou označenou oblast, ale pouze buňku, můžeme pracovat
pouze s ní a tudíž tuto část budeme ignorovat. Praktický význam si ukážeme
na semináři.
Opět si ukážeme, jak kód upravit, aby byl přehlednější a efektivnější po stránce výkonu:
Sub Dny_v_tydnu2()
ActiveCell = "Pondělí"
ActiveCell.Offset(1, 0) = "Úterý"
ActiveCell.Offset(2, 0) = "Středa"
ActiveCell.Offset(3, 0) = "Čtvrtek"
ActiveCell.Offset(4, 0) = "Pátek"
ActiveCell.Offset(5, 0) = "Sobota"
ActiveCell.Offset(6, 0) = "Neděle"
End Sub
Opět máme jen pár řádků, které fungují tak, jako předtím, ale značně zredukovaly původní kód,
který nebyl úplně přehledný. Zrušili jsme opět klikání (nikde nenajdeme příkaz Select). Vždy
chceme, aby makro zapsalo název dne do aktuální buňky a další dny bude zapisovat do buněk
pod sebe, které jsou vzdáleny od této aktuální (kam zapíšeme Pondělí) 1 až 6 buněk (Úterý
až Neděle). Důležité je tedy pochopit, že když jsme zrušili posun kurzoru, vše se vztahuje
k buňce, která byla označená před spuštěním makra.
Nyní vítejte ve světě VBA programátorů. Perfektní je, že si veškeré úpravy můžete ihned zkusit v praxi
a tak se postupně učit, co a jak dělat správně a co naopak nedělat – editor Vás vždy varuje v situacích,
kdy není syntaxe správná a tudíž Vám nedovolí kód v chybné podobě ponechat.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 27
OKNO IMMEDIATE
Pro testy chování jednotlivých příkazů, funkcí či procedur máte dvě možnosti. Buď příkaz či funkci
umístíte do nějakého makra a tu pak spustíte, nebo to uděláte přímo v okně Immediate. Okno
Immediate otevřeme příkazem nabídky View – Immediate. Okno je standardně ukotveno k dolnímu
okraji okna editoru.
V příkladu na Obr. 30 je zapsán kód, který přejmenuje první list v Excelovském sešitu na První. Okno
Immediate bylo v tomto případě použito pro rychlé přejmenování listu. Hodí se Vám například
v momentě, kdy se s editorem VBA naučíte a začnete psát svá makra. Uprostřed makra zjistíte,
že potřebujete v rámci sešitu Excelu něco změnit a místo kde se to dá udělat je právě zde.
Obr. 30 Okno Immediate
Zkuste zde napsat Beep a stisknout Enter. Jestliže máte v počítači zapnutý zvuk, ozve se pípnutí. Okno
samozřejmě umí mnohem víc, o čemž se přesvědčíte na kurzu.
Vestavěné příkazy ani vlastní procedury obvykle do okna Immediate nic nevypisují.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 28
KROKOVÁNÍ
Krokování programu se využívá jako základní prostředek nalezení chyb v programu. Během krokování
můžeme sledovat hodnoty proměnných v programu, správnost vyhodnocení proměnných atd. Pokud
využíváme krokování k testování proměnných, je třeba zobrazil okno Locals Window, ve kterém
uvidíme v reálném čase stavy jednotlivých proměnných. U našich maker dnů v týdnu se toto netýká,
protože makra neukládají nic do paměti, ale rovnou vypisují konkrétní textové řetězce do buněk.
Do režimu krokování se nejjednodušeji dostaneme zmáčknutím klávesy F8 – důležité je, abychom měli
kliknuto kdekoliv v kódu makra, které chceme krokovat.
Během krokování se vždy provede jeden příkaz (viz Obr. 31 – žluté znázornění). Pokud chceme vykonat
následující příkaz, znovu stiskneme klávesu F8. Režim ladění je možné kdykoliv ukončit tlačítkem Reset
(ikona modré kostičky na panelu nástrojů v editoru VBA).
Při ladění je ideální spustit vedle sebe jak okno editoru VBA, tak samotný sešit Excelu, ve kterém je
ihned vidět výsledek každého kroku. Na příkladu níže je uvedeno krokování makra Dny_v_tydnu, které
již bylo „očištěno“ od zbytečných řádků. Při provádění je patrné, že se kurzor v Excelovské tabulce
nepohybuje (nekliká se), ale pouze se zapisují textové údaje do buněk.
Obr. 31 Krokování programu
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 29
ZÁKLADY JAZYKA VBA
Podprogram: je to sled příkazů, vykonávaný jako celek a tvořící uzavřenou jednotku. Běh spuštěného
programu je možné přerušit voláním jiného, po jehož vykonání se řízení vrací zpět do nedokončeného
volajícího programu.
PROCEDURY
Procedura: jedná se o podprogram, který provede sérii příkazů a skončí. Jedná se o libovolný sled
příkazů mezi řádky Sub a End Sub.
Příklad procedury:
Sub Test()
Sum = 1 + 1
MsgBox “Výsledek je “ & Sum
End Sub
Toto makro nedělá nic jiného, než že po spuštění ukáže výsledek součtu dvou jedniček – tedy výsledek
bude vždy 2.
Kdybychom makro upravili následovně…
Sub Test()
Prvni = Range(„A1“)
Druhe = Range(„A2“)
Sum = Prvni + Druhe
MsgBox “Výsledek je “ & Sum
End Sub
…makro by při každém jeho spuštění spočítalo součet hodnot z buněk A1 a A2. První dva řádky načtou
do proměnných Prvni a Druhy hodnoty z buněk, následně proběhne matematická operace součet
a výsledek je uložen do proměnné Sum. Výsledek vypíšeme pomocí funkce MsBox (okno se zprávou)
na obrazovku. Toto makro bude tedy reagovat na aktuální hodnoty v buňkách A1 a B1 a je možné
o použít obecněji než makro předchozí, které sčítá dvě konstantní hodnoty.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 30
FUNKCE
Je to podprogram, který kromě toho, že provede nějaké příkazy, také vrací určitou hodnotu. Jedná se
o libovolný sled příkazů mezi řádky Function a End Function. Funkci bude možné dohledat mezi
klasickými tabulkovými funkcemi Excelu a používat jí v tabulkách jako každou jinou (SUMA, KDYŽ,
SVYHLEDAT, …).
Funkce již mají většinou argumenty, které jsou uvedeny v závorkách za názvem funkce.
Prostřednictvím těchto argumentů vstupují do funkce hodnoty, které jsou ve funkci vyhodnocovány.
Příklad funkce:
Function MS(KMH)
MS = KMH * 1000 / 3600
End Function
Vysvětlení funkce výše:
Tato funkce převádí hodnoty vyjádřen v jednotce km/h na m/s.
Její použití bude jednoduché.
V tabulce (Obr. 32) budeme mít ve sloupci A několik hodnot v km/h a do sloupce B chceme
vypočítat hodnoty v m/s.
Protože budeme tento přepočet provádět denně na několika místech, vytvořili jsme si funkce
s názvem MS (viz výše). Použití bude jednoduché. Do buňky zapíšeme vzorec =MS(A2), kde A2
je souřadnice, ve které se nachází hodnota, kterou chceme přepočítat. To je celé.
Obr. 32 Použití vlastní funkce
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 31
PŘÍKAZY A JEJICH ZÁPIS
Konvence říká, že na jeden řádek v kódu píšeme jeden příkaz. Je to nejpřehlednější způsob a vylučuje
některé chyby vzniklé zápisem.
Je-li příkaz moc dlouhý, lze jej rozdělit na více řádků. Na konci každého řádku je nutné napsat znak
pokračování řádku, což je mezera následovaná podtržítkem („ _“).
NÁZVY OBJEKTŮ, PROMĚNNÝCH A KONSTANT - PRAVIDLA
Musí začínat písmenem.
Nesmí obsahovat tyto znaky: mezera, &, #, @, $, %, !, čárka, tečka.
Neměli by obsahovat akcentované znaky.
Názvy nesmí být delší než 255 znaků, ale v praxi nepoužívejte více než 32 znaků.
Nemůžete použít dva stejné názvy v jednom rozsahu platnosti proměnné, či objektu.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 32
DATOVÉ TYPY PROMĚNNÝCH A KONSTANT
Název: pravidla pro definici viz výše.
Datový typ: vyjadřuje jaký typ hodnoty, můžeme do proměnné umístit a kolik místa v paměti zabere.
Platnost: určuje, které části aplikace mohou s proměnnou pracovat.
Životnost: specifikuje dobu existence proměnné.
Datový typ
Datový typ určuje, co všechno můžete do proměnné uložit, a také způsob, jakým budou data uložena
v paměti. Jestliže datový typ nezadáte, použije VBA výchozí typ Variant, který povoluje zadání všech
možných hodnot.
Typ Velikost Rozsah hodnot a význam
Byte 1 bajt Číslo 0 až 255; používá se pro ukládání binárních dat.
Integer 2 bajty Čísla v rozsahu -32 768 až 32 767. Základní typ pro práci s celými
čísly.
Long 4 bajty Celá čísla v rozsahu -2 147 483 648 až 2 147 483 647.
Single 4 bajty Desetinná čísla s přesností na 6 desetinných míst. Rozsah možných
hodnot je uveden v nápovědě.
Double 8 bajtů Desetinná čísla s dvojnásobnou přesností při výpočtu. Rozsah
možných hodnot je uveden v nápovědě.
Currency 8 bajtů Číslo s pevným počtem 4 desetinných míst. Rozsah možných
hodnot je uveden v nápovědě. Výpočty s tímto typem probíhají
rychleji než u typu Single či Double.
Decimal 14 bajtů Tento typ není možné deklarovat, proměnnou tohoto typu lze
získat jen převodem proměnné typu Variant. Tento typ je určen pro
čísla s extrémním počtem desetinných míst.
String Různá Textové řetězce.
Boolean 2 bajty Logická hodnota True nebo False.
Date 8 bajtů Datum v rozsahu 1. leden 100 až 31. prosinec 9999.
Object 4 bajty Jakýkoliv odkaz na objekt.
Variant různá Základní typ, může obsahovat speciální hodnoty
Tab. 1 Datové typy
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 33
Rozsah platnosti a životnost
Každá proměnná a konstanta má svůj rozsah platnosti určující, které podprogramy jsou schopny
s touto proměnnou pracovat (které ji vidí).
Lokální proměnné: mohou být použity pouze v tom podprogramu, v němž se vyskytují.
Modulové proměnné: jsou dostupné v rámci celého modulu a lze je proto využít třeba k uložení
hodnoty, která má být dostupná někdy v jiné proceduře.
Globální proměnné: mohou být použity ve všech modulech, neboli v celém sešitu.
Deklarace proměnných
Deklarací rozumíme určení jména, typu a platnosti proměnné předtím, než tuto proměnnou v kódu
použijeme. Ve VBA nemusíme lokálním proměnnou deklarovat, místo toho ji lze přímo v kódu přiřadit
nějakou hodnotu. Vystavujeme se však několika problémům:
Pokud není proměnná deklarována, je jí přiřazen typ Variant. To znamená vyšší spotřebu místa
v operační paměti.
Kdykoliv, když při zápisu jména proměnné uděláme chybu, vznikne nová proměnná.
Je výhodné nastavit editor VBA tak, aby deklaraci lokálních proměnných vynutil. Toto vynucením
zajistíte zapnutím volby Require Variable Declaration, kterou najdete v okně možností Tools, Options
na kartě Editor.
Vlastní deklaraci zajistí příkaz Dim:
Dim jmeno_promenne [As typ_promenne]
Public Sub Prvni()
Dim jmeno As String
jmeno = “Helena Obříková“
Druha
End Sub
Public Sub Druha()
MsgBox jmeno
End Sub
Datový typ String
Proměnlivá délka: Dim Jmeno As String
Pevná délka 20 znaků: Dim Jmeno As String * 20
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 34
OPERÁTORY
VBA obsahuje několik typů operátorů (aritmetické, logické, relační a spojovací). V následujících
tabulkách (Tab. 2, Tab. 3, Tab. 4, Tab. 5) uvedu pouze jejich přehled a příklad použití.
Aritmetické operátory
Operátor Význam
^ - umocnění (výsledek = číslo ^ exponent)
* - násobení (výsledek = číslo1 * číslo2)
/ - dělení (výsledek = číslo1 / číslo2)
\ - celočíselné dělení (výsledek = číslo1 \ číslo2)
Mod - zbytek po celočíselném dělení (výsledek = číslo1 Mod číslo2)
+ - sčítání (výsledek = výraz1 + výraz2)
- - odečítání (výsledek = číslo1 – číslo2)
Tab. 2 Aritmetické operátory
Relační operátory
Operátor Význam
< - menší než
<= - menší nebo rovno
> - větší než
>= - větší nebo rovno
<> - nerovná se
= - rovná se
Is - používá se k porovnání odkazů na objekty ve dvou proměnných.
Like - používá se k porovnání dvou řetězců.
Tab. 3 Relační operátory
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 35
Spojovací operátory
Operátor Význam
& - používá se k vynucení spojení řetězců dvou výrazů (výsledek = výraz1 &
výraz2)
+ - spojení dvou výrazů, pokud alespoň jeden typu string (výsledek = výraz1 +
výraz2)
Tab. 4 Spojovací operátory
Logické operátory
Operátor Význam
And - logický součin dvou výrazů. Podmínka je True, pokud oba výrazy jsou True
Eqv - logická shoda dvou výrazů. Podmínka je True, pokud jsou oba výrazy stejné
Not - logická negace výrazu. Podmínka je True, pokud výraz je False
Or - logické nebo dvou výrazů. Podmínka je True, pokud alespoň jeden výraz je
True
Xor - exluzivní logické nebo. Podmínka je True, pokud jeden výraz je True, druhý
False
Tab. 5 Logické operátory
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 36
ROZHODOVACÍ BLOKY
V mnoha případech je nutné vykonávat v kódu různé věci v závislosti na určité podmínce.
Rozhodovací blok If-Then-Else
Nejčastěji používanou skupinou příkazů ve VBA je If – Then (Obr. 33). Tato běžná instrukce představuje
jeden ze způsobů jak vaši aplikaci opatřit „schopností rozhodování“.
Syntaxe:
If podmínka Then
[příkazy_pro_splněno]
[Else If podmínka – n Then]
[alternativní_příkazy – n]
[Else]
[příkazy_pro_standardní_případ]
End If
Obr. 33 Podmínka If-Then-Else
Příklad:
Sub Pozdrav()
If Time < 0.5 Then
MsgBox “Dobré dopoledne“
ElseIf Time >= 0.5 And Time < 0.75 Then
MsgBox “Dobré dopoledne“
ElseIf Time >= 0.75 Then
MsgBox “Dobrý večer“
End If
End Sub
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 37
Ekvivalentní zápis:
Sub Pozdrav()
If Time <0.5 Then
MsgBox “Dobré dopoledne“
Else
If Time >= 0.5 And Time < 0.75 Then
MsgBox “Dobré dopoledne“
Else
If Time >= 0.75 Then
MsgBox “Dobrý večer“
End If
End If
End If
End Sub
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 38
CYKLY
Potřebujeme-li určitou část kódu provádět opakovaně, uděláme to nejlépe pomocí cyklu.
Cykly For – Next
Známe-li počet požadovaných opakování, použijeme příkaz For…Next (Obr. 34).
Cyklus s pevným počtem opakování:
Obr. 34 Cyklus For-Next
Syntaxe:
For počítadlo = počátek To konec [Step krok]
[příkazy]
Next [počítadlo]
Příklad:
Potřebujeme sečíst hodnoty z padesáti buněk ve sloupci A počínaje buňkou A1.
Sub SoucetHodnot()
Range("A1").Select
soucet = 0
For i = 1 To 50
a = ActiveCell.Value
soucet = soucet + a
ActiveCell.Offset(1, 0).Select
Next i
MsgBox soucet
End Sub
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 39
Cykly Do While
Tento cyklus se provádí, dokud je splněna podmínka.
Cyklus s podmínkou na začátku:
Obr. 35 Cyklus Do-While s podmínkou na začátku
Cyklus s podmínkou na konci:
Obr. 36 Cyklus For-Next s podmínkou na konci
Syntaxe:
Do [While podmínka]
[příkazy]
Loop
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 40
nebo:
Do
[příkazy]
Loop [While podmínka]
Příklad:
Potřebujeme vyplnit všechny prázdné buňky hodnotou nula. Pokud makro narazí na vyplněnou buňku,
skončí.
Sub DoWhileDemo()
Do While IsEmpty(ActiveCell)
ActiveCell.Value = 0
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Příklad:
Obdoba předchozího příkladu, avšak aktivní buňka na začátku budou nulou vyplněna vždy, podmínka
se bude testovat až při posunu o buňku níže.
Sub DoWhileDemo2()
Do While
ActiveCell.Value = 0
Aktive.Cell.Offset(1, 0).Select
Loop IsEmpty(ActiveCell)
End Sub
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 41
SPECIÁLNÍ MAKRA AUTO_OPEN A AUTO_CLOSE
Pokud vyžadujete, aby Excel při otevření, případně zavření, sešitu vykonal jakoukoliv akci či skupinu
akcí, můžete využít speciálních maker Auto_Open a Auto_Close, která jsou k tomuto účelu přímo
určená.
Makro Auto_Open
Makro se spustí okamžitě po otevření sešitu a provede operace, které jsou zaznamenány v těle makra.
Může se využít např.:
K nastavení písma.
K nastavení šířky sloupců, výšky řádků.
K nastavení buňkového kurzoru na konkrétní buňku.
K pozdravu uživatele, jeho přihlášení apod.
Příklad využití makra Auto_Open:
Při každém spuštění sešitu budeme vyžadovat zobrazení informační zprávy. Budeme postupovat
následovně:
1. Otevřeme Modul v prostředí editoru VBA.
2. Napíšeme následující kód:
Sub Auto_Open()
MsgBox “Vítejte v tabulkách firmy Educio s.r.o.“
End Sub
3. A nyní nás již při každém otevření sešitu bude Excel „otravovat“ s touto zprávou.
Makro Auto_Close
Makro se spustí těsně před zavřením sešitu a provede operace, které jsou zaznamenány v těle makra.
Může se využít např.:
K uložení sešitu.
K vytištění listu.
K zaslání sešitu e-mailem.
K provedení standardních nastavení, které byly změněné makrem Auto_Open apod.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 42
Příklad využití makra Auto_Close:
Bez dotazu programu Excel budeme chtít automaticky ukládat sešit při jeho zavření se všemi jeho
změnami. Budeme postupovat následovně:
1. Otevřeme Modul v prostředí editoru VBA.
2. Napíšeme následující kód:
Sub Auto_Close()
ActiveWorkbook.Save
End Sub
3. A nyní již při každém zavření sešitu bude Excel dokument automaticky ukládat.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 43
MSGBOX A INPUTBOX
MsgBox
Pokud budete chtít uživateli Vašeho sešitu sdělit konkrétní informaci, využijete zcela jistě funkce
MsgBox, neboli okna se zprávou.
Funkce MsgBox má celkem pět parametrů, z toho jen jeden povinný.
Syntaxe InputBox je následující:
MsgBox(prompt [, buttons] [, title] [, HelpFile] [, Context])
Syntaxe je rozebrána v tabulce níže:
Parametr Význam
prompt Zpráva zobrazená v okně hlášení (povinný).
buttons Stanoví druh a počet tlačítek v okně (volitelný).
title Text v titulkovém pruhu (volitelný).
HelpFile Název souboru nápovědy, který je přidružen oknu hlášení (volitelný).
Context Identifikátor kontextového tématu nápovědy (volitelný).
Příklady použití InputBox:
Potřebujeme informovat uživatele o nemožnosti výpočtu (Obr. 37).
MsgBox “Makro bylo úspěšně provedeno“
Obr. 37 MsgBox – příklad 1
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 44
Oproti prvnímu případu navíc vyplníme nadpis okna (titulkový řádek) a doplníme výstražnou
ikonu (Obr. 38).
MsgBox “Nelze vypočítat kvůli chybějícím datům.“, vbCritical, “Chyba“
Obr. 38 MsgBox – příklad 2
Zeptáme se uživatele, zda chce opravdu pokračovat. V případě, že uživatel zvolí odpověď Ano,
program bude pokračovat, pokud zvolí odpověď Ne, makro se zastaví. Tlačítko Ne bude navíc
označené jako výchozí volba (viz Obr. 39).
Odpověď = MsgBox(“Chcete pokračovat?“, vbYesNo + vbQuestion + _
vbDefaultButton2)
If Odpověď = vbNo Then Exit Sub
Obr. 39 MsgBox – příklad 3
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 45
InputBox
Funkce i metoda InputBox představují standardní způsob, jak uživatele Excelu požádat o zadání nějaké
hodnoty, kterou makro vyžaduje pro svou činnost.
Základní rozdíl mezi funkcí a metodou InputBox spočívá v tom, že metoda InputBox si dokáže vynutit
typ zadávané hodnoty pomocí parametru type.
Syntaxe InputBox je následující:
InputBox(prompt [, title] [, default] [, left] [, top] [, helpfile]_ [,
helpcontextid] [, type])
Syntaxe je rozebrána v tabulce níže (Tab. 6):
Parametr Význam
prompt Zpráva zobrazená v okně hlášení (povinný).
title Titulek okna (volitelný).
default Výchozí hodnota, která bude v InputBox zobrazena ihned po jeho otevření a
vybrána do bloku, aby ji uživatel mohl přímo přepsat (volitelný).
left, top Určují pozici okna InputBox (volitelné).
helpfile Název souboru nápovědy a identifikátor příslušného hesla.
helpcontextid (volitelné)
type Jen u metody InputBox. Definuje typ zadané hodnoty, který musí být dodržen
(volitelný). Možné hodnoty jsou:
0 – vzorec;
1 – číslo;
2 – text;
4 – logická hodnota True nebo False;
8 – odkaz na buňku ve formě objektu Range;
16 – chybová hodnota;
64 – pole hodnot.
Tab. 6 MsgBox – syntaxe
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 46
Příklady použití InputBox:
Potřebujeme po uživateli zadat číslo a zkontrolovat, zda jde skutečně o číslo (Obr. 40). V této kapitole
se tedy budeme zabývat tím, jak „převzít“ dané číslo od uživatele a uložit ho do nějaké proměnné
(např. x).
x =Application.InputBox("Zadej číslo", Type:=1)
Obr. 40 InputBox – příklad 1
Potřebujeme po uživateli zadat číslo, které v základu předvyplníme na 1,25 z důvodu vysoké frekvence
výskytu a okno pojmenujeme nadpisem Přehledy (Obr. 41).
x =InputBox("Zadej koeficient růstu", "Přehledy", 1.25)
Obr. 41 InputBox – příklad 2
Všimněte si, že jsme pro ukázku v tomto případě nechtěli vynutit typ číslo, proto nemusí metodě
InputBox předcházet klíčový objekt Application.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 47
PRAKTICKÁ ČÁST
Na semináři se naučíte používat základní příkazy v rámci VBA a díky nim budete schopni
naprogramovat vlastní makra, která Vám pomohou při běžné práci.
Tato skripta Vám pomohou orientovat se v základech maker a jako opora v základech VBA.
Součástí těchto skript by měla být dvoudenní sbírka příkladů, kterou vypracujete společně s lektorem
na semináři přímo na svých počítačích. Díky tomu budete mít v ruce jak tento teoretický manuál,
tak praktické příklady, což se bude doplňovat.
Na semináři se naučíte:
Zaznamenat makra.
Pracovat s editorem VBA.
Makra, která pracují s buňkami, rozsahy, sloupci, řádky.
Makra, která pracují s listy.
Makra pracující s vstupem od uživatele a makra pracující s výstupy na obrazovku v podobě
oken (InputBox, MsgBox).
Makra, která se provádí automaticky po spuštění či po uzavření sešitu (Auto_Open,
Auto_Close).
Makra pracující s podmínkami při vyhodnocování stavu (podmínky If - Else).
Makra pracující se smyčkami – v cyklech (Do - While, For - Next).
Funkce, kterými doplníte základní tabulkové funkce pro běžné použití.
Základy práce s formuláři.
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 48
NEJČASTĚJŠÍ KLÁVESOVÉ ZKRATKY V MS EXCEL
ZÁKLADNÍ OPERACE SE SCHRÁNKOU
Ctrl + C Kopírovat Ctrl + V Vložit Ctrl + X Vyjmout
ZÁKLADNÍ KLÁVESOVÉ ZKRATKY PRO OZNAČOVÁNÍ A POHYB V TABULKÁCH
Ctrl + A Označí aktuální oblast (při
druhém stisku označí celý list) Ctrl + ← Posun v tabulce úplně vlevo Ctrl + Shift + ←
Označí řádek od aktuální
buňky až úplně vlevo
Ctrl + * Označí aktuální oblast Ctrl + ↑ Posun v tabulce úplně nahoru Ctrl + Shift + ↑ Označí sloupec
od aktuální buňky nahoru
Ctrl + . Posun mezi rohovými buňkami
v označené oblasti buněk Ctrl + → Posun v tabulce úplně doprava Ctrl + Shift + →
Označí řádek od aktuální
buňky až úplně doprava
F8 Aktivuje rozšířený výběr
(lze vybírat bez nutnosti myši). Ctrl + ↓ Posun v tabulce úplně dolů Ctrl + Shift + ↓
Označí sloupec
od aktuální buňky dolů
Shift +
mezerník Označí řádek
Ctrl +
mezerník Označí sloupec
Ctrl + Shift +
mezerník Označí celý list
KLÁVESOVÉ ZKRATKY VYUŽÍVANÉ PŘI PRÁCI S NÁSTROJI
Ctrl + F Najít Ctrl + O Otevřít Ctrl + B Tučné písmo
Ctrl + H Nahradit Ctrl + S Uložit Ctrl + I Kurzíva
Ctrl + Z Krok zpět Ctrl + G (F5) Přejít na Ctrl + U Podtržené písmo
Ctrl + P Tisknout Alt + F8 Zobrazit makra Shift + F11 Nový list
Ctrl + T Vložit tabulku Alt + F11 Spustit editor maker VBA Ctrl + N Nový sešit
KLÁVESOVÉ ZKRATKY VYUŽÍVANÉ PŘI PRÁCI SE VZORCI
F3 Použít název ve vzorci F4
Změna typu odkazu
(absolutní, relativní,
smíšený) - $
F9 Přepočítat celý sešit
Ctrl + F3 Správce názvů Ctrl + , Zobrazit vzorce Shift + F9 Přepočítat celý list
Shift + F3 Vložit funkci Alt + = Vloží funkci SUMA Ctrl + ; Vloží aktuální datum
Ctrl + Enter
Vložit do označených buněk
stejný obsah (zmnožený
vstup)
Alt + Enter Řádkovat v rámci jedné
buňky
Ctrl + Shift +
Enter
Potvrzení maticového
vzorce (kolem vzniknou
složené závorky { } )
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 49
SPECIÁLNÍ ZNAKY PŘI PRÁCI S MS EXCEL
AltGr + X # AltGr + C & AltGr + š ^
AltGr + , < AltGr + F [ AltGr + B {
AltGr + . > AltGr + G ] AltGr + N }
© Jaroslav Nedoma
MS Excel – automatizace práce pomocí maker 50
ZÁVĚR
Dostali jsme se až na samotný závěr publikace. Naučili jsme se pracovat s makry a zjistili jsme, že jsou
velkým pomocníkem Excelu. Pokud jste se dočetli až sem, můžete o sobě prohlásit, že jste právě
vstoupili do světa programátorů maker a dokážete si tak usnadnit každodenní práci v Excelu.
Budu se na Vás těšit zase na příštím školení, na kterém se seznámíme s dalšími zajímavými nástroji,
a to v jakémkoli jiném programu sady Microsoft Office.
Na www.lektornedoma.cz se můžete v PREMIUM sekci dostat k podkladům k problematice MS Office.
Přístup do PREMIUM sekce získáte po vyplnění referenčního dotazníku na adrese
http://lektornedoma.cz/dotaznik. Děkuji za jeho vyplnění. Díky Vašim podmětům mohu zlepšovat
kvalitu mých seminářů.
Přeji hodně úspěchů při práci s Excelem a jeho nástroji.
Sestava skript ze dne: 2017-01-10.
Doporučeno používat pro verze MS Office 2007 – 2016.
Budu rád za nahlášení Vámi objevených chyb v těchto materiálech, abych je mohl opravit
na správnou variantu. Jakékoliv podněty k vylepšení přijímám na e-mailu [email protected].