8 Makra Příklad 3 Excel 2010 OPF v Karviné, Slezská univerzita v Opavě Kateřina Slaninová TÉMA: Úprava maker – práce s proměnnými, funkce InputBox Sekretářka společnosti „Naše zahrada“ potřebuje upravit makra vytvořená pomocí záznamu tak, aby vyhovovala jejím požadavkům. Pro úpravy využije Editor jazyka Visual Basic a jeho vybrané příkazy pro zobrazování oken, práci s proměnnými a rozhodování v průběhu chodu makra. Zadání: Otevřete sešit UpravaMakraVstup.xlsm. V dokumentu se nachází již vytvořené makro Hledání, které po spuštění nalezne první výskyt slova květináč ve sloupci, kde se nachází aktivní buňka. Makro upravte následujícím způsobem (pro úpravu makra využijte prostředí Editoru jazyka Visual Basic a jeho vybrané příkazy): 1. Makro bude hledat libovolný text. 2. Text pro hledání bude po spuštění makra zadán z klávesnice do dialogového okna a uložen do proměnné text. 3. V dialogovém okně bude zobrazen text Zadejte text pro hledání:, titulek okna bude Hledání textu. 4. Upravené makro vyzkoušejte. 5. Sešit uložte a uzavřete. Řešení Algoritmus 8 Makra Příklad 3 Excel 2010 OPF v Karviné, Slezská univerzita v Opavě Kateřina Slaninová Řešení: Karta Soubor/Otevřít (nebo tlačítko Otevřít na panelu nástrojů Rychlý přístup, popř. klávesová zkratka Ctrl+O). V dialogovém okně Otevřít nalézt soubor dle zadání, tlačítko Otevřít. Sešit má příponu .xlsm, což je formát podporující makra. Po otevření sešitu se zobrazí informační pruh s oznámením, že v sešitě se nachází aktivní obsah (makro). Povolit práci s tímto makrem – tlačítko Povolit obsah. Pozn. Zobrazení informačního pruhu záleží na nastavení zabezpečení Excelu (karta Vývojář/skupina Kód/příkaz Zabezpečení maker/v dialogovém okně Centrum zabezpečení/sekce Nastavení maker/Zakázat všechna makra s oznámením – Excel při otvírání sešitu upozorní uživatele na přítomnost makra, uživatel může práci s tímto makrem povolit, pokud mu důvěřuje). Makro vytvořené pomocí záznamu se ukládá na pozadí v podobě příkazů jazyka Visual Basic for Application (VBA) do procedury s názvem makra. Úpravy maker se provádějí v Editoru jazyka Visual Basic – karta Vývojář/skupina Kód/příkaz Visual Basic. Pozn. Pokud není karta Vývojář zobrazena, lze ji zobrazit - karta Soubor/příkaz Možnosti/sekce Přizpůsobit pás karet/zatrhnout položku Vývojář. Spustí se Editor jazyka Visual Basic, který je součástí instalace Excelu. V okně projektů (Project – VBAProject v levé části) se nachází seznam právě otevřených sešitů včetně šablony Personal; pro každý sešit je vytvořen samostatný projekt (název sešitu je vždy uveden v závorce). Pozn. Pokud není okno projektů zobrazeno, lze je zobrazit přes nabídku View/Project Explorer. Je-li vytvořeno v sešitě makro, nachází se v příslušném projektu pod skupinou Modules/Module1. Zobrazení kódu makra – dvakrát kliknout na položku Module1 u příslušného projektu, zobrazí se okno kódu s příkazy zaznamenaného makra. Každé makro je uloženo do samostatné procedury, která začíná příkazem Sub NázevMakra() a končí příkazem End Sub. Uprostřed procedury se na každém řádku nacházejí příkazy makra. Text označený zeleně (začínající apostrofem ’ má funkci komentářů, které nejsou makrem prováděny). Algoritmus slovně: 1. Text zadaný z klávesnice uložíme do proměnné text, která bude datového typu String (textový řetězec). Pozn. Proměnné se používají pro ukládání hodnot, se kterými budeme dále pracovat. Každá proměnná musí mít jedinečný název a musí být předem určeno, které údaje se do ní budou ukládat, což se udává nadefinováním datového typu. Pro text (řetězce) se používá datový typ String, pro celá čísla např. datový typ Integer, pro reálná čísla např. typ Double a pro datum a čas datový typ Date. Kompletní seznam datových typů je uveden v nápovědě Editoru jazyka Visual Basic. 2. Pro vstup z klávesnice se používá dialogové okno vyvolané funkcí InputBox(). Tato funkce má několik parametrů potřebných pro provedení makra. Parametry se definují do závorek, jsou odděleny čárkou – první údaj se týká zobrazovaného textu v dialogovém okně, druhý údaj je titulek okna, třetí údaj implicitní text, který se v okně zobrazí a uživatel jej může dále přepsat. Další parametry nejsou povinné a pro naše účely nepodstatné. 8 Makra Příklad 3 Excel 2010 OPF v Karviné, Slezská univerzita v Opavě Kateřina Slaninová Provedení: Před úpravou makra doporučujeme makro nejprve vyzkoušet – karta Vývojář/příkaz Makra/v dialogovém okně Makra vybrat makro Hledání, příkaz Spustit. Úprava makra: 1. Karta Vývojář/skupina Kód/příkaz Makra/v dialogovém okně Makra vybrat makro Hledání, příkaz Upravit. Otevře se prostředí editoru Microsoft Visual Basic s již vytvořeným makrem Hledání. 2. Umístit kurzor pod text s komentářem (zelená barva, řádek začíná apostrofem), vytvořit nový řádek klávesou Enter, vepsat příkaz pro deklaraci proměnné text (pokud hodláme použít proměnnou, musíme nejprve provést její deklaraci – nadefinovat její název a datový typ údajů, které se budou do proměnné ukládat, podrobnější popis viz výše): Dim text As String 3. Na další řádek vložit příkaz InputBox() umožňující načtení textu zadáním klávesnice (jedná se o text, který bude následně makro hledat). Text bude uložen do proměnné text: text = InputBox(”Zadejte text pro hledání:”,”Hledání textu”) 4. Upravit makro tak, aby hledalo zadaný text z klávesnice, který je uložen v proměnné text (a ne původní slovo květináč) – přepsat v parametrech příkazu Selection.Find text „květináč“ v uvozovkách na název proměnné text (bez uvozovek). Pozn. Pokud v kódu pracujeme s textem, uvádíme jej v uvozovkách. Chceme-li pracovat s hodnotou uloženou v proměnné, uvádíme název proměnné bez uvozovek. V našem případě bude makro pracovat s hodnotou (slovem) uloženou do proměnné text. 5. Vyzkoušení makra: zobrazit aktuální sešit, označit buňku ve sloupci, ve kterém chceme hledat výraz. Karta Vývojář/skupina Kód/příkaz Makra/v dialogovém okně Makra najít vytvořené makro, tlačítko Spustit. Pozn. Makro lze spustit také v prostředí Editoru jazyka Visual Basic prostřednictvím nabídky Run/Run Macro. Pozn. Pokud dojde při provádění makra k chybě, upozorní na ni Excel uživatele zprávou. Excel ohlásí chybu také tehdy, nenajde-li makro hledaný výrah ve sloupci. Dále lze pokračovat tlačítkem End – ukončení makra, nebo Debug – přerušení chodu makra. V obou případech se zobrazí Editor jazyka Visual Basic s kódem makra, ve druhém případě bude žlutě zvýrazněn příkaz, ve kterém došlo k chybě. Po odstranění chyby je nutné makro ukončit (nabídka Run/Reset), aby bylo možné je spustit opět od začátku. Pokud je kód v Editoru zobrazen červeně, znamená to, že je v příkazu syntaktická chyba (často chybí závorka, uvozovky, čárka apod.). 6. Uložit sešit - karta Soubor/Uložit (nebo tlačítko Uložit na panelu nástrojů Rychlý přístup nebo klávesy Ctrl+S). Zavřít sešit - karta Soubor/Zavřít (nebo tlačítko Zavřít – x v pravém horním rohu okna). Zpět na zadání 8 Makra Příklad 3 Excel 2010 OPF v Karviné, Slezská univerzita v Opavě Kateřina Slaninová Algoritmus: Sub Hledání() ' ' Hledání Makro ' ' Klávesová zkratka: Ctrl+k ' Dim text As String text = InputBox("Zadejte text pro hledání:", "Hledání textu") ActiveCell.Columns("A:A").EntireColumn.Select ActiveCell.Activate Selection.Find(What:=text, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate End Sub Zpět na zadání