Det finns tillfällen då du inte vill att en användare stänger en Excel-arbetsbok utan att ange en specifik bit av data. I dessa situationer skulle det vara användbart att neka användaren möjligheten att stänga arbetsboken tills målcellen är ifylld (som visas här). Det är här det här snygga makrot kommer in.

Förhindra stängning tills en specifik cell är fylld.
Hur makrot fungerar
Den här koden utlöses av arbetsbokens BeforeClose-händelse. När du försöker stänga arbetsboken utlöses den här händelsen och kör koden inom. Detta makro kontrollerar om målcellen (cell C7, i det här fallet) är tom. Om den är tom avbryts stängningsprocessen. Om C7 inte är tom, sparas och stängs arbetsboken:
Privat underarbetsbok_BeforeClose(Avbryt som boolesk)
'Steg 1: Kontrollera om cell C7 är tom
If Sheets("Sheet1").Range("C7").Value = " Then
'Steg 2: Om cellen är tom, avbryt stängningen och berätta för användaren
Avbryt = Sant
MsgBox "Cell C7 kan inte vara tom"
'Steg 3: Om cellen inte är tom, spara och stäng
Annan
ActiveWorkbook.Close SaveChanges:=True
Avsluta om
Avsluta Sub
Steg 1 kontrollerar om C7 är tomt.
Om C7 är tomt, träder steg 2 i kraft, vilket avbryter stängningsprocessen genom att skicka True till Cancel Boolean. Steg 2 aktiverar också en meddelanderuta som meddelar användaren om hans eller hennes dumhet (tja, det är inte riktigt så hårt, egentligen).
I steg 3, om cell C7 inte är tom, sparas och stängs arbetsboken.
Hur man använder makrot
För att implementera detta makro måste du kopiera och klistra in det i Workbook_BeforeClose-händelsekodfönstret. Om du placerar makrot här kan det köras varje gång du försöker stänga arbetsboken:
Aktivera Visual Basic Editor genom att trycka på Alt+F11.
I projektfönstret hittar du ditt projekt-/arbetsboksnamn och klickar på plustecknet bredvid för att se alla ark.
Klicka på ThisWorkbook.
I listrutan Händelse väljer du händelsen BeforeClose.
Skriv eller klistra in koden i den nyskapade modulen.

Ange din kod i händelsen Workbook BeforeClose.