Jak spustit makro v aplikaci Excel

Přestože spuštění makra v aplikaci Excel není obtížné, existuje mnoho způsobů, jak je spustit. Některé způsoby mají usnadnit používání maker, zatímco jiné způsoby mohou zcela změnit způsob, jakým uživatel interaguje s vaším sešitem. V tomto článku se budeme zabývat některými zřejmými způsoby, jak spouštět makra, jako jsou ovládací prvky seznamu maker a tlačítek, a některými temnějšími způsoby, jako je editor VB a události.

Nejprve: Zajistěte, aby byla povolena makra

Funkce zabezpečení aplikace Excel ve výchozím nastavení zakáží makra. Při otevírání sešitu s povolenými makry jsou uživatelé obvykle vyzváni, pokud chtějí povolit makra.

Pokud nemůžete spouštět makra, zkuste postupovat podle těchto pokynů:

  • Uložte sešit
  • Zavřete sešit a poté jej znovu otevřete
  • Když se sešit načte, uvidíte a Bezpečnostní varování výzvu (na obrázku níže). Klikněte Povolit obsah.

Spusťte makro ze seznamu maker

Seznam maker je přístupný z karty Zobrazit. Chcete -li zobrazit tento seznam:

  • Vybrat Pohled tab
  • Klikněte na tlačítko označené Makra vyvolejte seznam maker

  • Ze seznamu vyberte makro, které chcete spustit, a poté klikněte na Běh knoflík

Seznam maker můžete také kdykoli zobrazit stisknutím ALT+F8.

Spusťte makro pomocí klávesové zkratky

K často používanému makru můžete přiřadit klávesovou zkratku ve formě CTRL+nebo CTRL+SHIFT+. Udělat toto:

  • Vyvolejte seznam maker (Pohled > Makranebo ALT+F8)
  • Vyberte makro, na které chcete použít zástupce
  • Klikněte Možnosti… ukázat Možnosti makra dílčí dialog

  • V textovém poli pod Klávesová zkratka, zadejte jedno písmeno a poté klikněte OK. Pokud při psaní písmene podržíte klávesu SHIFT, na štítku vedle pole se jako zkratka zobrazí SHIFT

POZNÁMKA: při vytváření klávesové zkratky důrazně doporučujeme použít SHIFT! Excel sám používá zkratky CTRL+, např. CTRL+C pro kopírování nebo CTRL+V pro uložení. Pokud vytvoříte zástupce makra pomocí těchto nebo jiných zástupců aplikace Excel, budete přepisovat zástupce aplikace Excel, dokud zástupce makra znovu nepřiřadíte.

Spusťte makro z editoru VB

Makra lze spouštět také z editoru VB. Editor VB vám umožňuje zkontrolovat kód makra a provést požadované změny před jeho spuštěním.

Spuštění makra v editoru VB:

  • Otevřete editor VB (karta Vývojář> Visual Basic nebo ALT+F11)

  • V Projekt v okně poklepejte na modul obsahující makro, které chcete otestovat
  • V okně kódu modulu umístěte kurzor kdekoli v kódu makra mezi „Sub“ a „End Sub“
  • Klikněte na Běh na panelu nástrojů nebo stiskněte klávesovou zkratku F5

Spusťte makro pomocí tlačítka nebo tvaru

Často je užitečné mít na listu ovládací prvek, na který může uživatel kliknutím spustit makro, například ovládací prvek Tlačítko nebo Tvar. Pro koncové uživatele je to mnohem rychlejší než otevírání seznamů maker nebo kopání kódu makra v editoru VB.

Informace o tom, jak vytvořit klikací tlačítko nebo tvar, najdete zde: Přidat tlačítko a přiřadit makro v aplikaci Excel.

Automatické spuštění makra pomocí událostí ve VBA

Makro je možné spustit, když se něco stane v aplikaci Excel - například při otevření sešitu nebo při změně hodnoty buňky. Těm se říká Události, a můžete pro ně napsat kód VBA pro volání maker nebo provádění jiných operací.

Chcete -li napsat kód pro událost, budete muset použít editor VB. Chcete -li například zobrazit události pro sešit:

  • Otevřete editor VB (ALT+F11)
  • Poklepejte na ikonu Tato pracovní kniha objekt v editoru VB Okno projektu
  • V rozevíracím seznamu v levé horní části okna kódu vyberte „Sešit“
  • Kliknutím na rozevírací seznam vpravo zobrazíte seznam událostí

Následuje malá, ale užitečná ukázka událostí aplikace Excel, ze kterých lze spouštět makra.

Sešit_Otevřít ()

Událost Workbook_Open () se spustí při otevření sešitu. Pokud dostanete upozornění zabezpečení po otevření sešitu, tato událost se spustí po kliknutí na „Povolit obsah“.

12345 Soukromý dílčí sešit_Otevřít ()MsgBox "Sešit otevřen!"End Sub

Workbook_BeforeClose (Zrušit jako logická hodnota)

Workbook_BeforeClose () se spustí, když se uživatel pokusí zavřít sešit. Stává se to před provedením jakýchkoli kontrol, zda je třeba sešit uložit.

The zrušení parametr lze nastavit na True, aby se sešit nezavřel.

123456789 Soukromý dílčí sešit_BeforeClose (Zrušit jako booleovský)Pokud MsgBox („Jste si jisti?“, VbYesNo + vbQuestion, „Zavřít“) = vbNo PakZrušit = PravdaKonec IfEnd Sub

Worksheet_Change (ByVal Target As Range)

Worksheet_Change () se spustí, když se změní hodnota buňky - ať už ji změní makro, operace kopírování/vložení nebo externí odkaz. Nespustí se však, když je hodnota přepočítána pomocí vzorce.

The cílová parametr představuje buňky, jejichž hodnota se změnila.

Pokud v této události změníte hodnotu ostatních buněk, událost se spustí znovu. To může způsobit nekonečnou smyčku. Pokud potřebujete změnit hodnoty buněk bez spuštění této události, zvažte nastavení Application.EnableEvents na Nepravdivé nejprve a poté jej nastavte zpět na Skutečný na konci procedury akce.

123456789 Soukromý dílčí pracovní list_Změna (cíl podle cíle jako rozsah)MsgBox "Buňky změněny:" & Target.AddressApplication.EnableEvents = FalseRozsah („A2“). Hodnota = Rozsah („A2“). Hodnota + Target.Cells.CountApplication.EnableEvents = TrueEnd Sub

Worksheet_SelectionChange (ByVal Target As Range)

Tato událost se spustí vždy, když jsou pomocí zaměřovací záměrné osnovy vybrány různé buňky. Parametr Target představuje nové buňky, které byly vybrány.

Tuto událost můžete spustit také pomocí kódu, tj. „Rozsah („ A1 “). Vyberte„. Stejně jako u Worksheet_Change () byste měli být opatrní při výběru dalších buněk v této události, protože můžete způsobit nekonečnou smyčku. Použijte Application.EnableEvents.

123456789 Soukromý dílčí list_Volba výběru (cíl podle rozsahu jako rozsah)Pokud Target.Address = "$ A $ 1" PakMsgBox "Kurzor v domovské poloze."Konec IfEnd Sub

Zastavte běžící makro

Spuštěné makro lze přerušit stisknutím ESC nebo CTRL+BREAK. Ve výchozím nastavení přerušení makra zobrazí následující dialog:

Klikání Konec zastaví makro, zatímco Pokračovat obnoví to. Klikání Ladit otevře makro v editoru VB a zaměří řádek kódu, na kterém bylo pozastaveno provádění. (V editoru VB můžete makro zastavit nebo obnovit pomocí tlačítek Spustit nebo Konec na panelu nástrojů.)

Application.EnableCancelKey

Možnost zastavit makro můžete vypnout pomocí ESC nebo CTRL+BREAK nastavením Application.EnableCancelKey vlastnictví. Tato vlastnost má tři možné hodnoty: This property has three possible values:

  • xl Přerušení - toto je výchozí hodnota, díky které Excel zobrazí výše uvedený dialog
  • xl Zakázáno - odebere možnost zastavit spuštěné makro
  • xlErrorHandler - při pokusu o přerušení je vyvolána chyba, kterou lze zpracovat v kódu

Kdykoli se spuštění kódu zastaví, Excel vždy resetuje hodnotu Application.EnableCancelKey zpět na xl Přerušení.

Dobrým důvodem pro použití této vlastnosti je zabezpečení. Pokud jste například měli makro, které dočasně nechránilo části vašeho sešitu, uživatel by potenciálně mohl makro zastavit ihned po zrušení ochrany a získat přístup k obsahu, který jste neměli v úmyslu mít. Nastavením Application.EnableCancelKey můžete zcela zakázat jejich schopnost to udělat, nebo elegantně zpracovat jejich přerušení pomocí obsluhy chyb, která znovu chrání sešit.

1234567891011 Sub UpdateBaseData (ByVal NewData As Range, ByVal Target As Range)Application.EnableCancelKey = xlDisabledTarget.Worksheet.Unprotect "MyPassword"Cíl NewData.CopyTarget.Worksheet.Protect "MyPassword"Application.EnableCancelKey = xlInterruptEnd Sub

Vynutit zavření aplikace Excel pomocí Správce úloh systému Windows

Pokud se makro „zaseklo“ nebo je Excel příliš zaneprázdněn na potvrzení pokusu o přerušení, budete možná muset vynutit zavření samotného Excelu pomocí Správce úloh systému Windows. (POZNÁMKA: Pokud tak učiníte, můžete přijít o neuloženou práci a budete se muset spolehnout na verzi sešitu pro automatické obnovení.)

  • Otevřete Správce úloh přímo pomocí CTRL+SHIFT+ESC
  • Vybrat "Procesy”Tab
  • Rozbalením položky „Microsoft Excel“ zobrazíte všechny sešity
  • Vyberte sešit, který chcete zavřít, a poté klikněte Ukončit úkol v pravém dolním rohu

wave wave wave wave wave