Mõnikord te ei soovi, et kasutaja sulgeks Exceli töövihiku ilma konkreetset andmeid sisestamata. Sellistes olukordades oleks kasulik keelata kasutajal töövihiku sulgemine seni, kuni sihtlahter on täidetud (nagu siin näidatud). Siin tulebki sisse see vahva makro.

Väldi sulgemist, kuni konkreetne lahter on asustatud.
Kuidas makro töötab
Selle koodi käivitab töövihiku sündmus BeforeClose. Kui proovite töövihikut sulgeda, käivitub see sündmus, käivitades sees oleva koodi. See makro kontrollib, kas sihtlahter (antud juhul lahter C7) on tühi. Kui see on tühi, siis sulgemisprotsess tühistatakse. Kui C7 pole tühi, salvestatakse ja suletakse töövihik:
Privaatne alamtöövihik_BeforeClose (Tühista kui Boolean)
1. samm: kontrollige, kas lahter C7 on tühi
Kui Sheets("Leht1").Range("C7").Väärtus = " Siis
2. samm: kui lahter on tühi, tühistage sulgemine ja teavitage kasutajat
Tühista = Tõene
MsgBox "Cell C7 ei saa olla tühi"
3. samm: kui lahter ei ole tühi, salvestage ja sulgege
Muidu
ActiveWorkbook.Close SaveChanges:=Tõsi
Lõpeta Kui
Lõpeta alam
Samm 1 kontrollib, kas C7 on tühi.
Kui C7 on tühi, jõustub 2. toiming, mis tühistab sulgemisprotsessi, edastades tõeväärtuse Tühista tõeväärtuse. Samm 2 aktiveerib ka sõnumikasti, mis teavitab kasutajat tema rumalusest (noh, see pole päris nii karm, tõesti).
Kui lahter C7 ei ole 3. sammus tühi, salvestatakse ja suletakse töövihik.
Kuidas makrot kasutada
Selle makro rakendamiseks peate selle kopeerima ja kleepima sündmuse koodi aknasse Workbook_BeforeClose. Makro siia paigutamine võimaldab seda käivitada iga kord, kui proovite töövihikut sulgeda.
Aktiveerige Visual Basic Editor, vajutades Alt+F11.
Leidke projektiaknas oma projekti/töövihiku nimi ja klõpsake kõigi lehtede nägemiseks selle kõrval olevat plussmärki.
Klõpsake nuppu See töövihik.
Valige ripploendist Sündmus sündmus BeforeClose.
Tippige või kleepige kood vastloodud moodulisse.

Sisestage oma kood sündmusele Workbook BeforeClose.