Včasih ne želite, da uporabnik zapre Excelov delovni zvezek, ne da bi vnesel določen podatek. V teh situacijah bi bilo koristno uporabniku onemogočiti možnost zapiranja delovnega zvezka, dokler se ciljna celica ne izpolni (kot je prikazano tukaj). Tukaj pride ta čudovit makro.
Preprečite zapiranje, dokler se določena celica ne zapolni.
Kako deluje makro
To kodo sproži dogodek BeforeClose delovnega zvezka. Ko poskusite zapreti delovni zvezek, se ta dogodek sproži in zažene kodo znotraj. Ta makro preveri, ali je ciljna celica (v tem primeru celica C7) prazna. Če je prazen, se postopek zapiranja prekliče. Če C7 ni prazen, se delovni zvezek shrani in zapre:
Private Sub Workbook_BeforeClose(Prekliči kot Boolean)
1. korak: Preverite, ali je celica C7 prazna
Če Sheets("Sheet1").Range("C7").Value = " Potem
2. korak: Če je celica prazna, prekličite zapiranje in obvestite uporabnika
Prekliči = Res
MsgBox "Celica C7 ne more biti prazna"
3. korak: Če celica ni prazna, shranite in zaprite
Drugače
ActiveWorkbook.Close SaveChanges:=True
Konec Če
Končni sub
1. korak preveri, ali je C7 prazen.
Če je C7 prazen, stopi v veljavo 2. korak, ki prekliče postopek zapiranja s posredovanjem True v logično vrednost Prekliči. 2. korak aktivira tudi sporočilo, ki uporabnika obvesti o njegovi neumnosti (no, v resnici ni tako ostro).
Če v 3. koraku celica C7 ni prazna, se delovni zvezek shrani in zapre.
Kako uporabljati makro
Za implementacijo tega makra ga morate kopirati in prilepiti v okno kode dogodka Workbook_BeforeClose. Če tukaj postavite makro, se lahko zažene vsakič, ko poskusite zapreti delovni zvezek:
Aktivirajte urejevalnik Visual Basic s pritiskom na Alt+F11.
V oknu projekta poiščite ime svojega projekta/delovnega zvezka in kliknite znak plus poleg njega, da si ogledate vse liste.
Kliknite Ta delovni zvezek.
Na spustnem seznamu Dogodek izberite dogodek Pred zapiranjem.
V novo ustvarjeni modul vnesite ali prilepite kodo.
Vnesite svojo kodo v dogodek Workbook BeforeClose.