2016/2017
MS EXCEL – základy programování a algoritmizace ve
VBA
Vedoucí týmu: Kristina Balogová
Členové týmu: Miroslava Saňáková
Nikola Pálfiová
Michal Machů
1
Obsah ALGORITMUS .......................................................................................................................... 2
Vlastnosti algoritmů ............................................................................................................... 2
Dělení algoritmů ..................................................................................................................... 2
Rekurzivní a iterativní algoritmy ....................................................................................... 2
Deterministické a nedeterministické algoritmy .................................................................. 2
Sériové, paralelní a distribuované algoritmy ...................................................................... 2
Různá pojetí pojmu algoritmus .............................................................................................. 2
Co je makro ................................................................................................................................ 3
Složitější makro .................................................................................................................. 3
První program ..................................................................................................................... 4
UŽIVATELSKY DEFINOVANÁ FUNKCE ............................................................................ 7
VBA-vytvoření vlastní funkce ............................................................................................... 7
ROZDÍL MEZI MAKREM A UŽIVATELSKY DEFINOVANOU FUNKCI (UDF) ............. 7
Debug ......................................................................................................................................... 8
ASCII ......................................................................................................................................... 8
ASCII TABULKA: ............................................................................................................ 8
UNICODE .................................................................................................................................. 9
HISTORIE .............................................................................................................................. 9
PŮVODNÍ CÍLE .................................................................................................................... 9
Jednotnost ........................................................................................................................... 9
Univerzálnost ..................................................................................................................... 9
Jednoznačnost ..................................................................................................................... 9
VYUŽITÍ .............................................................................................................................. 10
Operační systémy ............................................................................................................. 10
Aplikace ........................................................................................................................... 10
Web .................................................................................................................................. 10
VBA – referenční příručka ................................................................................................... 10
PŘÍKLADY PROGRAMOVÁNÍ VE VBA ............................................................................ 11
ZDROJE ................................................................................................................................... 12
2
ALGORITMUS
Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn
pomocí konečného množství přesně definovaných kroků. Ačkoliv se dnes tento pojem
používá především v informatice a přírodních vědách obecně, tak je jeho působnost daleko
širší (kuchyňské recepty, návody a postupy…). Samotné slovo algoritmus pochází ze jména
perského matematika 9. století, který ve svých dílech položil základy algebry (arabské číslice,
řešení lineárních a kvadratických rovnic).
Vlastnosti algoritmů
1. Konečnost – algoritmus má konečné množství kroků.
2. Určitost – všechny kroky algoritmu jsou přesně definovány.
3. Korektnost – algoritmus skončí pro libovolná data se správným výsledkem v
konečném množství kroků.
4. Obecnost – algoritmus řeší všechny úlohy daného typu.
Dělení algoritmů
Rekurzivní a iterativní algoritmy
Iterativní algoritmus je takový, který spočívá v opakování určité své části. Opakuje kód
prostřednictvím volání sebe sama.
Výhoda rekurzivních algoritmů je v jejich snadno čitelném zápisu. Nevýhodou je spotřeba
dodatečných systémových prostředků pro udržení jednotlivých rekurzivních volání.
Deterministické a nedeterministické algoritmy
Deterministický je takový algoritmus, který má v každém svém kroku právě jednu možnost,
jak pokračovat. Nedeterministický jich má více.
Sériové, paralelní a distribuované algoritmy
Sériový algorimus vykonává všechy kroky v sérii (jeden po druhém), paralelní algoritmus tyto
kroky vykonává zároveň (ve více vlákech) a distribuovaný algoritmus kroky vykonává
zároveň na více strojích.
Různá pojetí pojmu algoritmus
V běžné řeči a v různých učebnicích se setkáte s různě přísným pojetím pojmu algoritmus.
Někdo požaduje splnění více z uvedených vlastností, někdo méně. Základní myšlenka je
nicméně shodná. Algoritmus je lidsky (a tedy nepřesně) řečeno strojově proveditelný,
spolehlivý a užitečný pracovní postup.
3
Co je makro
Výborně se hodí pro stále se opakující činnosti. Případně chceme-li vytvořit v Excelu něco
profesionálního, neobjedeme se bez maker (VBA). Jejich použití je v Excelu velice
jednoduché. Stačí mít základy programování ve Visual Basicu (VB), nebo v jiném
programovacím jazyku, a již můžete programovat.
Složitější makro
Spustíme nejprve Visual Basic. V menu Nástroje vybereme makro a poté Editor jazyka
Visual Basic
Otevře se nám vlastní okno ve Visual Basicu. Doporučuji si ještě zobrazit okna Project
Explorer a Properties Window a obdržíme již použitelnou obrazovku:
4
Tak a máme přehledně uspořádanou plochu se všemi potřebnými drobnostmi. No a můžeme
se vrhnout do našeho prvního programu.
První program
Z menu vybereme Insert - Module a můžeme napsat náš První program. Pro jednoduchost si
vybereme například součet.
Function secti(x, y)
secti = x + y
End Function
5
Pro kontrolu námi vytvořených programů existuje mnoho prostředků, např.: Object Browser,
který nám umožní i vložit popisek námi vytvořené funkce. Ať víme, co jsme si to
naprogramovali.
Ke každé funkci si můžeme uložit komentář. V Object Browser pravým tlačítkem na funkci
vybereme Properties...
6
Zde zadáme náš popis. Po stisknutí OK se naše poznámka uloží.
A teď již můžeme v Excelu naší první funkci použít. Vybereme Vlož - Funkce,
vybereme vlastní funkce.
Zde již je stačí kliknout na název námi vytvořené funkce a hotovo :)
7
A tohle je výsledek.
Tak a tímto bychom měli svou první naprogramovanou funkci. Je pravda, že
zadáním =10+20 máme součtovou funkci hned a bez programování, ale cílem bylo ukázat jak
naprogramovat funkci na jednoduchém příkladu. Složitější příklady budou následovat.
UŽIVATELSKY DEFINOVANÁ FUNKCE
funkce je příkaz či sled příkazů vykonávaných jako celek a tvořících uzavřenou
jednotku,
kromě toho, že funkce provádí nějaké příkazy v určitém sledu (pořadí), tak také vrací
určitou hodnotu, a tuto hodnotu můžeme uložit do proměnné (resp . do paměti PC) a
následně zpracovat.
např. funkce y = log (x), tzn. známý zápis funkce „logaritmus“, ze zadaného čísla „x“
vypočítá jiné číslo a vyjádří (resp. na-vrátí) je jako číslo „y“. Funkce v programech,
tzn i v Excelu, se chovají stejně, tzn tak jak je v předchozím komentáři zmíněno,
návratová hodnota funkce může obsahovat buď výsledek výpočtu, nebo může
informovat o úspěšném či neúspěšném výsledku průběhu funkce.
VBA-vytvoření vlastní funkce
Jednotlivé verze Excelu mají integrovány řádově stovky funkcí. Přesto se můžeme dostat do
situace, kdy by se nám hodila funkce, která v Excelu není. Nebo nás nebaví opakovaně
zapisovat dlouhý vzorec obsahující více funkcí a chceme si vytvořit vlastní funkci, která tuto
kombinaci funkcí nahradí.
ROZDÍL MEZI MAKREM A UŽIVATELSKY DEFINOVANOU
FUNKCI (UDF)
Funkce jsou již v Excelu předdefinovány. Pomocí makra můžeme sloučit několik funkcí
dohromady a tím si vytvořit v Excelu nad tabulkou, sešitem, vlastní novou funkcionalitu.
8
Debug
Anglické slovo „debug“ znamená ladění anebo vychytaní chyb, odstraněni chyb
z počítačového programu. Je to proces odlaďovaní chyb z počítačového programu anebo při
vývoji softwaru.
ASCII
ASCII je anglická zkratka pro American Standard Code
for Information Interchange (americký standardní kód pro výměnu informací). Jde o kódovací
systém znaků anglické abecedy, číslic, jiných znaků a řídících kódů. Jde o historicky
nejúspěšnější znakovou sadu, z které vychází většina současných standardou pro kódovaní
textu přinejmenším v euro-americké zóně.
ASCII TABULKA:
0032 mezera 0033 ! 0034 " 0035 # 0036 $ 0037 % 0038 & 0039 ‚ 0040 ( 0041 ) 0042 * 0043 + 0044 , 0045 - 0046 . 0047 / 0048 0 0049 1 0050 2 0051 3 0052 4 0053 5 0054 6 0055 7 0056 8 0057 9 0058 : 0059 ; 0060 < 0061 = 0062 > 0063 ? 0064 @ 0065 A 0066 B 0067 C 0068 D 0069 E 0070 F 0071 G 0072 H 0073 I 0074 J 0075 K 0076 L
0077 M 0078 N 0079 O 0080 P 0081 Q 0082 R 0083 S 0084 T 0085 U 0086 V 0087 W 0088 X 0089 Y 0090 Z 0091 [ 0092 \ 0093 ] 0094 ^ 0095 _ 0096 ` 0097 a 0098 b 0099 c 0100 d 0101 e 0102 f 0103 g 0104 h 0105 i 0106 j 0107 k 0108 l 0109 m 0110 n 0111 o 0112 p 0113 q 0114 r 0115 s 0116 t 0117 u 0118 v 0119 w 0120 x 0121 y
0122 z 0123 { 0124 | 0125 } 0126 ~ 0127 • 0128 € 0129 � 0130 ‚ 0131 � 0132 " 0133 … 0134 † 0135 ‡ 0136 � 0137 ‰ 0138 Š 0139 ‹ 0140 Ś 0141 Ť 0142 Ž 0143 ? 0144 � 0145 ' 0146 ' 0147 " 0148 " 0149 o 0150 - 0151 - 0152 � 0153 ™ 0154 š 0155 › 0156 ś 0157 ť 0158 ž 0159 ź 0160 t. mezera 0161 ˇ 0162 ˘ 0163 Ł 0164 ¤ 0165 Ą 0166 ¦
0167 § 0168 ¨ 0169 © 0170 Ş 0171 " 0172 0173 0174 ® 0175 Ż 0176 ° 0177 ± 0178 ˛ 0179 ł 0180 ´ 0181 µ 0182 0183 · 0184 ¸ 0185 ą 0186 ş 0187 " 0188 Ľ 0189 ˝ 0190 ľ 0191 ż 0192 Ŕ 0193 Á 0194 Â 0195 Ă 0196 Ä 0197 Ĺ 0198 Ć 0199 Ç 0200 Č 0201 É 0202 Ę 0203 Ë 0204 Ě 0205 Í 0206 Î 0207 Ď 0208 Đ 0209 Ń 0210 Ň 0211 Ó
0212 Ô 0213 Ő 0214 Ö 0215 × 0216 Ř 0217 Ů 0218 Ú 0219 Ű 0220 Ü 0221 Ý 0222 Ţ 0223 ß 0224 ŕ 0225 á 0226 â 0227 ă 0228 ä 0229 ĺ 0230 ć 0231 ç 0232 č 0233 é 0234 ę 0235 ë 0236 ě 0237 í 0238 î 0239 ď 0240 đ 0241 ń 0242 ň 0243 ó 0244 ô 0245 ő 0246 ö 0247 ÷ 0248 ř 0249 ů 0250 ú 0251 ű 0252 ü 0253 ý 0254 ţ 0255 ˙
9
UNICODE
Unicode (anglicky Unicode) je technická norma pro oblast výpočetní techniky definující
konzistentní kódování pro reprezentaci a zpracovávání textů použitelné pro většinu písem
používaných v současnosti na Zemi. Nejnovější verze obsahuje repertoár více než 120 000
znaků pokrývajících 129 moderních a historických písem a mnoho sad symbolů. Standard
sestává ze sady tabulek pro vizuální referenci, popisu metod kódování, sady referenčních
datových souborů a dalších položek, jako například vlastností znaků, pravidel pro normalizaci
textů, dekompozici, řazení, vykreslování a zobrazování obousměrného textu (pro správné
zobrazení textu obsahující písma psaná zprava doleva i zleva doprava, jako například arabské
a hebrejské písmo
Úspěch Unicode v unifikaci znakových sad vedl k jeho rozšíření a převládajícímu používání
pro internacionalizaci a lokalizaci počítačového softwaru. Unicode je implementován mnoha
technologiemi, včetně moderních operačních systémů, XML, programovacím jazykem Java a
NET Frameworkem firmy Microsoft.
HISTORIE
Ke konci osmdesátých let 20. století vznikla naléhavá potřeba sjednotit různé kódové tabulky
znaků pro národní abecedy. Například český jazyk používal v informatice nejméně 5 různě
kódovaných tabulek (kódování bratří Kamenických, PC Latin 2, Windows-1250, ISO Latin.
Vznikaly značné problémy při spolupráci aplikací a při přenosech dat mezi programy a
různými platformami. Podobná situace byla ve všech jazycích, které nevystačily se základní
7bitovou tabulkou ASCII znaků.
Kolem roku 1991 došlo k dohodě a projekty spojily své úsilí na vytvoření jednotné tabulky.
Oba projekty stále existují a publikují své standardy samostatně, ale tabulky znaků jsou
kompatibilní a jejich rozšiřování je koordinováno.
PŮVODNÍ CÍLE
Jednotnost
Konstantní šířka znaků dovoluje efektivní hledání, třídění, editace a zobrazení prvků.
Univerzálnost
Kapacita znakové sady musí být dostatečně velká k zahrnutí všech znaků, které by mohly být
využity při výměně textů – především ty, které už byly definovány v hlavních mezinárodních,
národních a průmyslových znakových sadách.
Jednoznačnost
Jakákoli 16bitová hodnota, která zastupuje v jakémkoliv kontextu stejný znak.
10
VYUŽITÍ
Operační systémy
Znakovou sadu Unicode používá většina moderních operačních systémů. Operační systémy
Microsoft Windows používají pro vnitřní zápis znaků (např. jména souborů a adresářů v
NTFS) od Windows 2000 kódování UTF-16, avšak zároveň se v české mutaci používá
kódování CP1250 (historicky) a CP852 (v příkazovém řádku).
Aplikace
Některé starší aplikace Unicode (dosud) nepodporují. Na druhé straně pro některé systémy je
Unicode již jedinou používanou znakovou sadou.
Programovací jazyky Java a jazyky podporující Common Language Infrastructure (např. C#)
vnitřně používají šestnáctibitovou verzi Unicode a navenek podporují mnoho různých
kódování.
Web
Unicode je znakovou sadou pro HTML dokumenty od verze 4.0 a pro všechny XML
dokumenty. Výchozím kódováním je UTF-8, které všechny prohlížeče podporují už delší
dobu.
VBA – referenční příručka http://www.fce.vutbr.cz/aiu/vojkuvka.m/bu006/reference.pdf
UNICODE TABULKA
11
UNICODE znaky
PŘÍKLADY PROGRAMOVÁNÍ VE VBA
JAKOU HODNOTU VRÁTÍ PŘÍKAZ LEFT("PONDĚLÍ", 2)?
1. Funkce se jmenuje Leva_strana. Vstupními parametry této funkce jsou text a počet.
2. Návratovou hodnotou funkce Leva_strana je příkaz Left se vstupními parametry text a
počet. Příkaz Left vrací z námi zadaného řetězce ve vstupním parametru text počet
znaků z levé strany podle hodnoty ve vstupním parametru počet.
3. Řetězec je v podstatě slovo – neboli konečná posloupnost symbolů dané abecedy.
4. Parametry musí být odděleny středníkem.
12
5. Na obrázku v prvním sloupci vidíme pojmenování naší funkce, čili Leva_strana.
6. Naši funkci v excelu zavoláme zadáním rovnítka a napsáním leva, excel by nám měl
sám nabídnout naši naprogramovanou funkci Leva_strana. Příklad zadání vidíte ve
sloupci D.
7. Naším vstupním parametrem pro text je slovo Pondělí ve sloupci B a vstupní parametr
pro počet je 2 ve sloupci C.
8. Po zavolání funkce Leva_strana zadáváme nejprve parametr Pondělí, oddělíme
středníkem a můžeme zadat parametr 2.
9. Výstupem této funkce budou 2 znaky z levé strany zadaného řetězce.
ZDROJE
https://www.youtube.com/watch?v=nUHbVRSLlEs
http://www.fce.vutbr.cz/aiu/vojkuvka.m/BU06/projekt-2016/06/06-ucebni_text.pdf
http://ww2.justanswer.com/uploads/TooUnfazed/2009-09-
06_210006_Vista_Windows_Nabla_Symbol.jpg
http://ww2.justanswer.com/uploads/TooUnfazed/2009-09-
06_210006_Vista_Windows_Nabla_Symbol.jpg
http://www.biega.com/special-char.html
https://cs.wikipedia.org/wiki/Unicode#Opera.C4.8Dn.C3.AD_syst.C3.A9my