Sú chvíle, keď nechcete, aby používateľ uzavrel excelový zošit bez zadania konkrétneho údaja. V týchto situáciách by bolo užitočné odoprieť používateľovi možnosť zatvoriť zošit, kým sa nevyplní cieľová bunka (ako je znázornené tu). Tu prichádza na rad toto šikovné makro.
Zabráňte zatváraniu, kým sa nezaplní konkrétna bunka.
Ako funguje makro
Tento 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. Toto makro kontroluje, či je cieľová bunka (v tomto prípade bunka C7) prázdna. Ak je prázdny, proces zatvárania sa zruší. Ak C7 nie je prázdny, zošit sa uloží a zatvorí:
Súkromný podriadený zošit_pred zatvorením (zrušiť ako boolovský)
'Krok 1: Skontrolujte, či je bunka C7 prázdna
If Sheets("Sheet1").Range("C7").Hodnota = " Then
„Krok 2: Ak je bunka prázdna, zrušte zatvorenie a oznámte to používateľovi
Zrušiť = pravda
MsgBox "Bunka C7 nemôže byť prázdna"
„Krok 3: Ak bunka nie je prázdna, uložte ju a zatvorte
Inak
ActiveWorkbook.Close SaveChanges:=True
Koniec Ak
End Sub
Krok 1 skontroluje, či C7 nie je prázdny.
Ak je C7 prázdne, vstúpi do platnosti krok 2, ktorý zruší proces zatvorenia prenesením True do booleovskej hodnoty Cancel. Krok 2 tiež aktivuje okno so správou, ktoré používateľa upozorní na jeho hlúposť (no, nie je to až také kruté, naozaj).
Ak v kroku 3 nie je bunka C7 prázdna, zošit sa uloží a zatvorí.
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 sem 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.