Vannak esetek, amikor nem szeretné, hogy a felhasználó egy adott adat megadása nélkül zárja be az Excel-munkafüzetet. Ilyen helyzetekben hasznos lenne megtagadni a felhasználótól a munkafüzet bezárását mindaddig, amíg a célcella ki nem töltődik (az itt látható módon). Itt jön be ez a remek makró.

Megakadályozza a bezárást, amíg egy adott cellát fel nem töltenek.
Hogyan működik a makró
Ezt a kódot a munkafüzet BeforeClose eseménye váltja ki. Amikor megpróbálja bezárni a munkafüzetet, ez az esemény aktiválódik, és lefut a benne lévő kód. Ez a makró ellenőrzi, hogy a célcella (ebben az esetben a C7 cella) üres-e. Ha üres, a bezárási folyamat megszakad. Ha a C7 nem üres, a munkafüzet mentésre kerül és bezárásra kerül:
Privát almunkafüzet_BeforeClose (Mégse logikai értékként)
1. lépés: Ellenőrizze, hogy a C7 cella üres-e
If Sheets("Lap1").Tartomány("C7").Érték = " Akkor
'2. lépés: Ha a cella üres, törölje a bezárást, és értesítse a felhasználót
Mégse = Igaz
MsgBox "C7 cella nem lehet üres"
'3. lépés: Ha a cella nem üres, mentse el és zárja be
Más
ActiveWorkbook.Close SaveChanges:=Igaz
Vége Ha
Vége Sub
Az 1. lépés ellenőrzi, hogy a C7 üres-e.
Ha a C7 üres, a 2. lépés lép életbe, és megszakítja a bezárási folyamatot a True átadásával a Mégse logikai értéknek. A 2. lépés egy üzenetdobozt is aktivál, amely értesíti a felhasználót a hülyeségéről (hát ez nem annyira durva, tényleg).
A 3. lépésben, ha a C7 cella nem üres, a munkafüzet mentésre kerül és bezárásra kerül.
Hogyan kell használni a makrót
A makró megvalósításához másolja és illessze be a Workbook_BeforeClose eseménykód ablakba. Ha ide helyezi a makrót, akkor minden alkalommal lefut, amikor megpróbálja bezárni a munkafüzetet:
Aktiválja a Visual Basic Editort az Alt+F11 megnyomásával.
A projekt ablakban keresse meg a projekt/munkafüzet nevét, és kattintson a mellette lévő pluszjelre az összes lap megtekintéséhez.
Kattintson erre a munkafüzetre.
Az Esemény legördülő listában válassza ki a BeforeClose eseményt.
Írja be vagy illessze be a kódot az újonnan létrehozott modulba.

Írja be a kódot a Workbook BeforeClose eseménybe.