KIV/ZD cvičení 9 Tomáš Potužák
Makra I Posloupnost příkazů a funkcí uložených v modulu MS Visual Basic Uložené makro možno kdykoliv spustit a vykonat Vhodné pro složitější akce, které chceme používat opakovaně Např. vytvoření grafu z dat, která mají vždy stejnou strukturu Dostupné z Zobrazení Makro nebo Vývojář Kód
Makra II Bezpečnost Makro je v podstatě program přes makra se mohou šířit viry Několik úrovní zabezpečení vhodné nastavit vyšší úroveň zabezpečení – Zakázat makra s oznámením Při otevření sešitu s makry je nutné je pak povolit Možnost ověřovat důvěryhodnost maker digitálním podpisem
Vytvoření makra I Možnosti vytvoření Záznam makra Napsání makra ve Visual Basicu Nejjednodušší způsob vytvoření Zaznamená se posloupnost akcí, které ručně provede uživatel Označit výchozí oblast makra Spuštění záznamu – Zobrazení Makra Makra (šipka dolů) Záznam makra
Vytvoření makra II Zadat název marka, popř. klávesovou zkratku a popis Lze uložit do aktuálního či nového sešitu nebo do Osobního sešitu maker (typicky do aktuálního sešitu) Po stisknutí Ok se nahrávají akce uživatele, dokud není nahrávání zastaveno (Zobrazení Makra Makra v Zastavit záznam) Použít relativní odkazy – určuje, zda se akce budou provádět relativně k počáteční buňce makra nebo absolutně
Vytvoření makra III Napsání makra ve Visual Basicu (VB) Lze vytvořit nové makro nebo upravit existující Editor Visual Basicu je přístupný na Vývojář Kód Visual Basic nebo Zobrazení Makra Makra v Zobrazit makra Upravit Pro začátečníky je vhodné při úpravách vyjít ze zaznamenaných maker
Spuštění makra Klávesovou zkratkou [Ctrl] + [?] Výběrem makra Pokud byla zadána Výběrem makra Zobrazení Makra Makra v Zobrazit makra Spustit Přiřazením makra k ovládacímu prvku Primárně k tlačítku (dialog pro výběr makra se objeví hned při vložení) Lze i k dalším prvkům (kliknout pravým tlačítkem na prvek Přiřadit makro…)
Psaní makra ve VB I Základní struktura makra Tělo makra Sub NazevMakra() ' Komentář (klidně s diakritikou) <tělo makra - příkazy> End Sub Tělo makra Příkazy jako v běžném programovacím jazyku Příkazy se neukončují středníkem
Psaní makra ve VB II Vývojové prostředí VB v Excelu Doplňování kódu Kód makra se zobrazuje/upravuje ve vývojovém prostředí Řada nástrojů pro usnadnění práce Doplňování kódu Podobně jako v jiných vývojových prostředích [Ctrl]+[mezerník] – seznam dostupných příkazů
Psaní makra ve VB III Vytvoření nového makra Pokud nechceme upravovat existující (typicky nahrané záznamem nebo vytvořené dříve) Vývojář Kód Visual Basic Otevře se vývojové prostředí VB Tools Macros Zadat název Create Otevře se kód s hlavičkou makra pro přidání dalších příkazů (stejné jako když upravujeme existující makro)
Proměnné I Pro uložení dočasné hodnoty, se kterou budeme dále pracovat Název Musí začínat písmenem Nesmí se shodovat s žádným z klíčových slov Excelu Obecná deklarace Napsat název a přiřazení (bez udání datového typu) – lze přiřadit cokoliv Např. cislo = 5
Proměnné II Deklarace s typem Kromě názvu proměnné určíme i typ Zabere méně místa (jen místo nutné pro určený datový typ) Lze definovat i mimo konkrétní makro (v daném modulu) a používat ji tak různými makry („globální“ proměnná) Např. Dim cislo as Integer
Datové typy I Celočíselné Reálné číselné Liší se zabraným místem a rozsahem Byte – 0..255 (1B) Integer – -32768..32767 (2B) Long – -2147483648..2147483647 (4B) Reálné číselné Single – 4B Double – 8B Currency – měna (8B) Decimal – uložení v desítkové soustavě (14B)
Datové typy II Logická hodnota Datum Řetězce Boolean – 2B (PRAVDA/NEPRAVDA – true/false) Datum Date – 1.1.0100..31.12.9999 (8B) Řetězce String – velikost záleží na počtu znaků Objekt (např. buňka, písmo, …) Object – reference (4B)
Pole I Uložení více prvků stejného typu Jednorozměrné pole Statické pole se zadaným počtem prvků Dim názevPole(počet) As typ Příklad statického pole Dim cisla(10) As Integer Dynamické pole (počet prvků (zatím) neudán) Dim cisla() As Integer
Pole II Vícerozměrné pole Statické pole se zadanými indexy Dim trzby(2015 To 2017) As Currency Vícerozměrné pole Statické dvourozměrné pole Dim matice(3, 3) As Integer Dim matice(1 To 3, 1 To 7) As Byte Statické trojrozměrné pole Dim krychle(3, 3, 3) As Integer
Práce s proměnnými I Přiřazení proměnná = hodnota – pro primitivní datové typy, např.: Dim cislo as Integer cislo = 10 Set proměnná = hodnota – pro objekty, např.: Dim bunky as Range Set bunky = Range("A1:A10")
Práce s proměnnými II Porovnání a logické operátory Standardní operátory pro porovnání – <,<=, >, >=, =, <>, Like (např. "F" Like "[A-Z]") Logické operátory – And, Or, Not Aritmetické operátory +, -, *, ^ (umocnění), / (reálné dělení), \ (celočíselné dělení), Mod (zbytek po dělení) Spojovací operátory Zřetězení – +, & (např. 1+3=4, "1"+3=4, "1"&"3"="13", "1"+"3"="13", 1&3="13")
Řídící konstrukce – větvení I Větvení If-Else Pokud je podmínka pravdivá, proveď jednu akci, jinak proveď jinou akci If podmínka Then příkazy když je splněná Else příkazy když není splněná End If
Řídící konstrukce – větvení II Vlastnosti větvení If-Else Sekce Else není povinná Větví a podmínek může být více – použití ElseIf podmínka V každé větvi může být více příkazů Je možné vnořovat do sebe více konstrukcí If-Else a tvořit tak komplexní větvení s různorodými podmínkami
Řídící konstrukce – větvení III Větvení Select Case Vhodné v případě, že podle hodnot jedné proměnné je více různých větví Select Case proměnná Case podmínka1 příkazy1 Case podmínka2 příkazy2 Case Else příkazy3 End Select
Řídící konstrukce – cykly I Opakování příkazů Podle splnění podmínky nebo známý počet opakování Cyklus For Opakuje se zadaný počet opakování For i = 1 To 10 příkazy, co se opakují Next i
Řídící konstrukce – cykly II Cyklus For Each Opakuje se pro všechny prvky pole/seznamu Pro pole nesmí být udán typ řídící proměnné (prvek), pro seznam udán být může For Each prvek In prvky příkazy, co se opakují Next prvek
Řídící konstrukce – cykly III Cyklus Do Until Opakuje se, dokud není podmínka splněna (tj. v okamžiku, kdy podmínka je pravdivá, cyklus končí) Cyklus nemusí proběhnout ani jednou Do Until podmínka příkazy, co se opakují Loop
Řídící konstrukce – cykly IV Cyklus While Opakuje se, zatímco je podmínka splněna (tj. v okamžiku, kdy podmínka je nepravdivá, cyklus končí) Cyklus nemusí proběhnout ani jednou While podmínka příkazy, co se opakují Wend
Řídící konstrukce – objekty Konstrukce With Pro nastavení více vlastností jednoho objektu najednou With objekt .vlastnost1 = hodnota1 .vlastnost2 = hodnota2 End With
Vstupní dialog Okno se vstupem Nejjednodušší varianta Mnoho různých parametrů Nejjednodušší varianta Application.InputBox("Datum:") Více (ne všechny) nastavených parametrů Nutno zadat i formální názvy parametrů Application.InputBox(prompt := "Zadej řetězec:", Type := 2)
Informační dialog Okno s informací a jedním či více tlačítky Oznámení, nebo otázka Nejjednodušší varianta MsgBox("Úloha dokončena.") Obecná varianta MsgBox(zpráva, tlačítka, název) vybrano = MsgBox("Jste si jistý?", VbYesNo, "Otázka") vybrano obsahuje VbNo nebo VbYes