Tu uvedené makro je vynikajúci spôsob, ako chrániť používateľov pred neúmyselným zatvorením súboru pred uložením. Po implementácii toto makro zabezpečí, že Excel automaticky uloží zošit pred jeho zatvorením.
Excel zvyčajne upozorní používateľov, ktorí sa pokúšajú zavrieť neuložený zošit, a poskytne im možnosť uložiť pred zatvorením. Mnoho používateľov však môže varovanie preskočiť a neúmyselne kliknúť na Nie, čím Excelu povie, aby sa zatvoril bez uloženia. Pomocou tohto makra sa proti tomu chránite automatickým uložením pred zatvorením.
Ako funguje makro
Kód sa spúšťa udalosťou BeforeClose zošita. Pri pokuse o zatvorenie zošita sa spustí táto udalosť a spustí sa v ňom kód. Jadro kódu je jednoduché – pýta sa používateľov, či chcú zošit zavrieť. Makro potom vyhodnotí, či používateľ klikol na tlačidlo OK alebo Zrušiť.
Správa, ktorá sa zobrazí pri pokuse o zatvorenie zošita.
Vyhodnotenie sa vykonáva pomocou príkazu Select Case. Príkaz Select Case je alternatívou k príkazu If-Then-Else, ktorý vám umožňuje vykonávať kontroly stavu vašich makier. Základná konštrukcia príkazu Select Case je jednoduchá:
Vyberte položku Prípad
Prípad je =
Prípad je =
Prípad je =
Koniec Vyberte
Pomocou príkazu Select Case môžete vykonať veľa podmienených kontrol. V tomto prípade jednoducho začiarknete OK alebo Zrušiť. Pozrite sa na kód:
Súkromný podriadený zošit_pred zatvorením (zrušiť ako boolovský)
'Krok 1: Aktivujte okno so správou a spustite kontrolu
Vyberte Case MsgBox("Uložiť a zavrieť?", vbOKZrušiť)
'Krok 2: Stlačené tlačidlo Zrušiť, takže zrušte zatvorenie
Prípad je = vbCancel
Zrušiť = pravda
'Krok 3: Stlačené tlačidlo OK, takže zošit uložte a zatvorte
Prípad je = vbOK
ActiveWorkbook.Save
'Krok 4: Zatvorte vyhlásenie Select Case
Koniec Vyberte
End Sub
V kroku 1 aktivujete okno hlásenia ako kontrolu stavu pre vyhlásenie Select Case. Argument vbOKCancel použijete, aby ste zabezpečili, že tlačidlá OK a Zrušiť budú prezentované ako voľby.
Ak v kroku 2 používateľ klikol na tlačidlo Zrušiť v okne so správou, makro povie programu Excel, aby zrušil udalosť Workbook_Close odovzdaním hodnoty True do booleovskej hodnoty Cancel.
Ak používateľ klikol na tlačidlo OK v okne so správou, krok 3 nadobudne účinnosť. Tu poviete Excelu, aby uložil zošit. A pretože ste nenastavili hodnotu Cancel Boolean na hodnotu True, Excel pokračuje so zatvorením.
V kroku 4 jednoducho zatvoríte vyhlásenie Select Case. Zakaždým, keď vytvoríte inštanciu Select Case, musíte ho uzavrieť zodpovedajúcim End Select.
Ako používať makro
Ak chcete implementovať toto makro, musíte ho skopírovať a prilepiť do okna kódu udalosti Workbook_BeforeClose. Umiestnením makra tam umožníte jeho spustenie pri každom pokuse o zatvorenie zošita:
Aktivujte Editor jazyka Visual Basic stlačením Alt+F11.
V okne projektu nájdite názov projektu/zošita a kliknutím na znamienko plus vedľa neho zobrazte všetky hárky.
Kliknite na Tento zošit.
V rozbaľovacom zozname Udalosť vyberte udalosť BeforeClose.
Zadajte alebo prilepte kód do novovytvoreného modulu.
Zadajte svoj kód do udalosti Workbook BeforeClose.