Makrot som presenteras här är ett utmärkt sätt att skydda användare från att oavsiktligt stänga sin fil innan de sparas. När det är implementerat säkerställer detta makro att Excel automatiskt sparar arbetsboken innan den stänger den.
Excel kommer normalt att varna användare som försöker stänga en osparad arbetsbok, vilket ger dem möjlighet att spara innan de stänger. Men många användare kan blåsa förbi varningen och oavsiktligt klicka på Nej, vilket säger åt Excel att stänga utan att spara. Med detta makro skyddar du dig mot detta genom att automatiskt spara innan du stänger.
Hur makrot fungerar
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. Kärnan i koden är enkel - den frågar användarna om de vill stänga arbetsboken. Makrot utvärderar sedan om användaren klickade på OK eller Avbryt.

Meddelandet du ser när du försöker stänga arbetsboken.
Utvärderingen görs med ett Select Case-uttalande. Select Case-satsen är ett alternativ till If-Then-Else-satsen, som låter dig utföra tillståndskontroller i dina makron. Den grundläggande konstruktionen av en Select Case-sats är enkel:
Välj Fall
Fallet är =
Fallet är=
Fallet är=
Avsluta Välj
Med ett Select Case-uttalande kan du utföra många villkorskontroller. I det här fallet letar du helt enkelt efter OK eller Avbryt. Ta en titt på koden:
Privat underarbetsbok_BeforeClose(Avbryt som boolesk)
'Steg 1: Aktivera meddelanderutan och starta kontrollen
Välj Case MsgBox("Spara och stäng?", vbOKCancel)
'Steg 2: Avbryt-knappen nedtryckt, så avbryt stängningen
Case Is = vbCancel
Avbryt = Sant
'Steg 3: OK-knappen nedtryckt, så spara arbetsboken och stäng
Case Is = vbOK
ActiveWorkbook.Save
'Steg 4: Stäng ditt Select Case-uttalande
Avsluta Välj
Avsluta Sub
I steg 1 aktiverar du meddelanderutan som villkorskontrollen för Select Case-satsen. Du använder argumentet vbOKCancel för att säkerställa att knapparna OK och Avbryt visas som val.
I steg 2, om användaren klickade på Avbryt i meddelanderutan, säger makrot till Excel att avbryta Workbook_Close-händelsen genom att skicka True till Cancel Boolean.
Om användaren klickade på OK-knappen i meddelanderutan träder steg 3 i kraft. Här ber du Excel att spara arbetsboken. Och eftersom du inte ställde in Cancel Boolean till True, fortsätter Excel med stängningen.
I steg 4 stänger du helt enkelt ut Select Case-satsen. Varje gång du instansierar ett Select Case måste du stänga det med ett motsvarande End Select.
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. Genom att placera makrot dä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.