Zde uvedené makro je vynikající způsob, jak chránit uživatele před nechtěným zavřením souboru před uložením. Po implementaci toto makro zajistí, že aplikace Excel automaticky uloží sešit před jeho zavřením.
Excel obvykle upozorní uživatele, kteří se pokoušejí zavřít neuložený sešit, a poskytne jim možnost uložit před zavřením. Mnoho uživatelů však může varování přehlédnout a neúmyslně kliknout na Ne, čímž Excel sdělí, aby se zavřel bez uložení. S tímto makrem se proti tomu chráníte automatickým uložením před zavřením.
Jak makro funguje
Kód je spuštěn událostí BeforeClose v sešitu. Při pokusu o zavření sešitu se tato událost spustí a spustí kód uvnitř. Jádro kódu je jednoduché — ptá se uživatelů, zda chtějí sešit zavřít. Makro pak vyhodnotí, zda uživatel klikl na OK nebo Storno.
Zpráva, která se zobrazí, když se pokusíte sešit zavřít.
Vyhodnocení se provádí pomocí příkazu Select Case. Příkaz Select Case je alternativou k příkazu If-Then-Else a umožňuje vám provádět kontroly podmínek ve vašich makrech. Základní konstrukce příkazu Select Case je jednoduchá:
Vyberte případ
Případ je =
Případ je=
Případ je=
Konec Vyberte
Pomocí příkazu Select Case můžete provádět mnoho podmíněných kontrol. V tomto případě jednoduše zaškrtnete OK nebo Storno. Podívejte se na kód:
Private Sub Workbook_BeforeClose (Zrušit jako Boolean)
'Krok 1: Aktivujte schránku zpráv a spusťte kontrolu
Vyberte Case MsgBox("Uložit a zavřít?", vbOKCancel)
'Krok 2: Bylo stisknuto tlačítko Storno, takže zrušte zavírání
Případ je = vbCancel
Zrušit = Pravda
'Krok 3: Stisknuto tlačítko OK, takže sešit uložte a zavřete
Případ je = vbOK
Aktivní sešit.Uložit
'Krok 4: Zavřete prohlášení Select Case
Konec Vyberte
End Sub
V kroku 1 aktivujete okno se zprávou jako kontrolu stavu pro příkaz Select Case. Pomocí argumentu vbOKCancel zajistíte, že tlačítka OK a Storno budou prezentována jako volby.
Pokud uživatel v kroku 2 klepne na tlačítko Storno v okně se zprávou, makro sdělí aplikaci Excel, aby zrušila událost Workbook_Close předáním hodnoty True do booleovské hodnoty Cancel.
Pokud uživatel klepne na tlačítko OK v okně zprávy, krok 3 se projeví. Zde řeknete Excelu, aby sešit uložil. A protože jste nenastavili hodnotu Cancel Boolean na hodnotu True, Excel pokračuje uzavřením.
V kroku 4 jednoduše zavřete příkaz Select Case. Pokaždé, když vytvoříte instanci Select Case, musíte jej uzavřít odpovídajícím End Select.
Jak používat makro
Chcete-li implementovat toto makro, musíte jej zkopírovat a vložit do okna kódu události Workbook_BeforeClose. Umístěním makra tam umožníte jeho spuštění pokaždé, když se pokusíte sešit zavřít:
Aktivujte Editor jazyka Visual Basic stisknutím Alt+F11.
V okně projektu vyhledejte název projektu/sešitu a kliknutím na znaménko plus vedle něj zobrazte všechny listy.
Klepněte na ThisWorkbook.
V rozevíracím seznamu Událost vyberte událost BeforeClose.
Zadejte nebo vložte kód do nově vytvořeného modulu.
Zadejte svůj kód do události Workbook BeforeClose.