Příklady: Obsah | 8 Makra

8.2 Úprava maker – zápis do sešitu, výstup na obrazovku

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 UpravaMakraZapis.xlsm. V dokumentu se nachází již vytvořené makro Výpočet, které po spuštění zkopíruje údaje z tabulky na listu Nábytek, vloží je do tabulky na listu Výpočet a nakonec v této tabulce vypočítá součet hodnot. 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. Na začátek makra přidejte příkaz, který vloží na listu Výpočty do buňky C20 text Maximum:. Řešení
  2. Dále změňte makro tak, aby na konci vložilo do tabulky vzorce pro výpočet maxima (místo vzorců pro součet). Řešení
  3. Na konci makro zobrazí dialogové okno s textem Výpočet byl proveden. Řešení
  4. Upravené makro vyzkoušejte. Řešení
  5. Sešit uložte a uzavřete. Řešení

Ř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. Pro zápis hodnot do buněk v sešitě se používá objekt Range a jeho vlastnost Value (např. Range ("A1").Value=1). Pokud je hodnotou text, musí být uveden v uvozovkách. Pro zápis vzorců se používá vlastnost Formula, vzorce musí být uvedeny v uvozovkách.
  2. Pro výběr listu se používá metoda Select objektu kolekce Sheets: Sheets("NazevListu").Select. Obdobným způsobem lze označit také buňky s použitím příkazu Range (např. Range("D5").Select). Je-li již buňka označena, lze se na ni odkázat příkazem Activecell.
  3. Pro zobrazení zprávy na obrazovku slouží funkce MsgBox. Tato funkce má několik parametrů, první parametr udává text, který se zobrazí na obrazovku, další parametry (vzhled okna, titulek, umístění) jsou nepovinné.

Provedení:

Před úpravou makra doporučujeme makro nejprve vyzkoušet – karta Vývojář/skupina Kód/příkaz Makra/v dialogovém okně Makra vybrat makro Výpočet, příkaz Spustit.

Úprava makra:

  1. Zobrazit kód makra - karta Vývojář/skupina Kód/příkaz Makra/v dialogovém okně Makra vybrat makro Výpočet, příkaz Upravit. Otevře se prostředí editoru Microsoft Visual Basic s již vytvořeným makrem Výpočet.
  2. Vložit prázdný řádek za komentáře (zelený text) pomocí klávesy Enter, vepsat příkaz pro zobrazení listu Výpočty: Zadání
  3. Sheets("Výpočty").Select
  4. Vložit prázdný řádek a vepsat příkaz pro vložení textu do buňky C20: Zadání
  5. Range("C20").Value = "Maximum:"
  6. Nalézt v makru příkazy pro vložení vzorce se součtem a nahradit je příkazem pro výpočet maxima (funkci SUM nahradit funkcí MAX): Zadání
  7. ActiveCell.FormulaR1C1 = "=MAX(R[-15]C:R[-1]C)
    Tento zápis je proveden s relativními odkazy vzhledem k aktivní buňce. Řádek lze nahradit také zápisem s absolutními odkazy na buňky ve vzorci:
    ActiveCell.Formula = "=MAX(D5:D19)"
    Obdobným způsobem změnit také druhý vzorec (ve druhém sloupci tabulky).
  8. Na konci makra (před příkazem End Sub) vložit funkci MsgBox pro zobrazení zprávy: Zadání
  9. MsgBox "Výpočet byl proveden."
  10. Vyzkoušení makra: zobrazit aktuální sešit, 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. Zadání
  11. Pozn. Pokud dojde při provádění makra k chybě, upozorní na ni Excel uživatele zprávou. 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é jej znovu spustit 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.).
  12. 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). Zadání

Algoritmus

			
Sub Výpočty()
'
' Výpočty Makro
'
'
	Sheets("Výpočty").Select 		'Výběr sešitu
	Range("C20").Value = "Maximum:"	'Zápis hodnoty do buňky

	Sheets("Nábytek").Select
	Range("C4").Select				'Výběr buňky
	ActiveWindow.SmallScroll Down:=9
	Range("C4:D18").Select
	Selection.Copy
	Sheets("Výpočty").Select
	Range("D5").Select
	Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
	SkipBlanks:=False, Transpose:=False
	ActiveWindow.SmallScroll Down:=13
	Range("D20").Select
	Application.CutCopyMode = False
    
	'Vzorec s absolutními odkazy na buňku:
	ActiveCell.Formula = "=MAX(D5:D19)" 
	'Vzorec s relativními odkazy na buňku:
	' ActiveCell.FormulaR1C1 = "=MAX(R[-15]C:R[-1]C)" 
	Range("E20").Select
    
	ActiveCell.Formula = "=MAX(E5:E19)"
	' ActiveCell.FormulaR1C1 = "=MAX(R[-15]C:R[-1]C)"
    
	MsgBox "Výpočet byl proveden."  'Zobrazení zprávy v okně
End Sub