Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
Jaké máte možnosti na spuštění procedury ve VBA. Aneb seznam který se může hodit.
V tomto článku se dozvíte jaké máte možností spouštění procedur ve VBA. Pro přehlednost je článek rozdělen na kapitoly:
Jednotlivé možností, které si dále rozebereme:
Další kapitoly:
Ať můžete testovat, potřebujete mít ve VBA k dispozici proceduru (kód) který budete spouštět. Stačí spustit VBA editor z menu Vývojář - Visual Basic, nebo rychleji klávesovou zkratkou Alt+F11 (nebo pokud zatím nemáte zobrazenou kartu Vývojář alias Developer v angličtině).
Předpokladem je v Editoru VBA sekci Module. Nemate-li vytvoříte klik na Insert > Module a nad vyloženým Module1 klik a v pravém okně vložit kód.
Sub Pozdrav()
MsgBox ("Ahoj Světe.")
End Sub
Poznámka: Jak funguje editor VBA je sepsáno v jiné kapitole.
Jde o jednoduchou proceduru, která využitím MsgBox (dialogové okno) vypíše pozdrav „Ahoj světe“ do dialogového okna. Tato procedura se jmenuje Pozdrav.
Tip zelený text je jenom poznámka, ten psát nemusíte (více v kapitole o struktuře kódu).
Pokud máte hotovo. Můžeme jít testovat možností spuštění.
Mate-li vytvořenou proceduru (kód) potřebujete jej spustit. Pojďme se podívat jaké máte možností spuštění, na výběr máte:
První asi nejčastěji používanou metodou je spouštět kód přímo z editoru VBA využitím klávesové zkratky F5. Případně můžete ve VBA editoru v menu kliknou na zelený trojúhelník.
Nebo pomaleji v menu klik na Run a Run Sub/UserForm.
Tip: Zde můžete provést i Reset, případně přerušit běh programu, zde je ale nejlépe si zapamatovat zkratku Ctrl+Break (najděte jak ve vašem PC stisknete). V kapitole "debugování" se dozvíte jak spouštět kód postupně a hledat chyby.
Další možnosti jak vaši proceduru (makro) spustit je z Excelu přes ikonu Makra (Macros v angličtině) v pásu karet Vývojář (Developer). Nebo klávesová zkratka Alt + F8
V dialogovém okně jen vyberete makro, které chcete spustit. Ve výběrovém políčko Makra v (Macros in) můžete vybrat Tento sešit (This Workbook), ať máte seznam přehlednější.
Pokud jste makru přiřadili klávesovou zkratku, přes dialogové okno Makra (Macros) z pásu karet Vývojář. Případně Alt+F8.
V zobrazeném dialogovém okně přes Možnosti... (Options...) nastavit klávesovou zkratku.
Tip: Nastavte takovou které se nebude plést s jinou, například pro zvětšení obrazovky u programu ZoomIt atd.
Následně již možnost spuštění Ctrl + Shift + M.
Další možností je přidat na list tlačítko ActiveX, kterému přiřadíte kód na spuštění procedury. Následně klikem na tlačítko (pokud nejste v režimu návrhu), můžete makro spustit.
Tlačítko vložíte na list. Z pásu karet Vývojář (Developer) zapnout Režim návrhu (Design Mode). Vyberete tlačítko a vložíte na list.
Následně dvojklik na tlačítko, otevře se vám editor VBA a zde do prostoru kurzoru vložíte kód
Call Pozdrav
Nebo-li po kliku na tlačítko uvidíte v editoru dva řádky kódu, týkající se tlačítka a uprostřed bliká kurzor:
Private Sub CommandButton1_Click()
End Sub
Výsledek tedy bude vypadat:
Private Sub CommandButton1_Click()
Call Pozdrav
End Sub
Pokud vás napadne, zda se dají voláním předávat i parametry, potěším vás, dají, ale o tom v jiném článku, předávání parametru funkcím a procedurám.
Pokud máte na listě grafický objekt (může jít o tlačítko ze starší verze formulářů, které se chová jako graficky objekt) třeba čtvereček.
Přes pravé tlačítko nad objektem a vybrat Přiřadit makro (Assing Macro...).
V zobrazeném dialogovém okně vyberete makro Přiřadit makro, které chcete spustit a klik na OK
Pak jen stačí klik na obrazec a opět dojde ke spuštění makra.
Tip: Nové formuláře ActiveX, máte popsány v předchozím odstavci.
Po předchozím odstavci vás napadne, že makro můžete volat i z jiné procedury. Máte pravdu. Například do Module1 vložíte proceduru:
Sub PozdravNovy()
Call Pozdrav
End Sub
A můžete otestovat spouštění například přes trojúhelníček ;)
Další možností je vytvořit si vlastní menu (v samostatném článku jak na tvorbu vlastního menu) a z tohoto menu proceduru spouštět.
V Module1 tlačítku přiřadíte kód:
Sub Pozdrav(control As IRibbonControl)
MsgBox ("Funguje!")
End Sub
Samozřejmě, že tlačítko v pásu karet musí být správně nastaveno. V této části nepůjdu do podrobnosti, jen vám doporučím článek Vlastní pás karet Ribbon.
Makro se může spouštět na základě události, ať už při práci se sešitem, listem, formulářem. Více v článku o událostech, zde si ukážeme, že pozdrav budete chtít zobrazit po spuštění sešitu.
Kód stačí doplnit do sekce ThisWorkbook kód:
Private Sub Workbook_Open()
Call Pozdrav
End Sub
Následně po uložení a novém spuštění souboru obdržíte pozdrav.
Tip: někdy bude potřeba povolit makra.
Poslední možností je spouštění procedury v okně Immediate (ladicí okno). Stačí zadat Call a název procedury
Call Pozdrav
Procedurám se dají předávat i parametry, ale o tom v jiném článku.
související články, které již jsou sepsány:
Soubor ke stažení zdarma je v přípravě. Podpořit zveřejnění můžete podporou na Patreon.
Narazili jste na nějaký problém, máte tip, můžete se zmínit v komentářích.
Článek byl aktualizován: 15.09.2021 07:47
Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.
Můžete být prvními co zanechají smysluplný komentář.
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |