Jsou chvíle, kdy nechcete, aby uživatel uzavřel sešit aplikace Excel bez zadání konkrétního údaje. V těchto situacích by bylo užitečné odepřít uživateli možnost zavřít sešit, dokud nebude vyplněna cílová buňka (jak je znázorněno zde). Zde přichází na řadu toto šikovné makro.
Zabránit zavření, dokud nebude naplněna konkrétní buňka.
Jak makro funguje
Tento 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ř. Toto makro zkontroluje, zda je cílová buňka (v tomto případě buňka C7) prázdná. Pokud je prázdný, proces uzavření se zruší. Pokud C7 není prázdný, sešit se uloží a zavře:
Private Sub Workbook_BeforeClose (Zrušit jako Boolean)
'Krok 1: Zkontrolujte, zda je buňka C7 prázdná
If Sheets("Sheet1").Range("C7").Value = " Then
'Krok 2: Pokud je buňka prázdná, zrušte uzavření a informujte uživatele
Zrušit = Pravda
MsgBox "Buňka C7 nemůže být prázdná"
'Krok 3: Pokud buňka není prázdná, uložte ji a zavřete
Jiný
ActiveWorkbook.Close SaveChanges:=True
End If
End Sub
Krok 1 zkontroluje, zda není C7 prázdné.
Pokud je C7 prázdné, vstoupí v platnost krok 2 a proces uzavření se zruší předáním True do booleovské hodnoty Cancel. Krok 2 také aktivuje schránku se zprávou, která uživatele upozorní na jeho hloupost (no, není to tak drsné, opravdu).
Pokud v kroku 3 není buňka C7 prázdná, sešit se uloží a zavře.
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 sem umožníte jeho spuštění pokaždé, když se pokusíte zavřít sešit:
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.