Makroen som presenteres her er en utmerket måte å beskytte brukere mot utilsiktet lukking av filen før lagring. Når den er implementert, sikrer denne makroen at Excel automatisk lagrer arbeidsboken før den lukkes.
Excel vil normalt advare brukere som prøver å lukke en ulagret arbeidsbok, og gi dem muligheten til å lagre før de lukkes. Imidlertid kan mange brukere blåse forbi advarselen og utilsiktet klikke Nei, og be Excel lukke uten å lagre. Med denne makroen beskytter du deg mot dette ved å automatisk lagre før lukking.
Hvordan makroen fungerer
Koden utløses av arbeidsbokens BeforeClose-hendelse. Når du prøver å lukke arbeidsboken, utløses denne hendelsen og kjører koden innenfor. Kjernen i koden er enkel - den spør brukerne om de vil lukke arbeidsboken. Makroen evaluerer deretter om brukeren klikket OK eller Avbryt.
Meldingen du ser når du prøver å lukke arbeidsboken.
Evalueringen gjøres med en Select Case-erklæring. Select Case-setningen er et alternativ til If-Then-Else-setningen, som lar deg utføre tilstandskontroller i makroene dine. Den grunnleggende konstruksjonen av en Select Case-setning er enkel:
Velg Sak
Saken er =
Saken er=
Saken er=
Avslutt Velg
Med en Select Case-erklæring kan du utføre mange betingede kontroller. I dette tilfellet sjekker du ganske enkelt for OK eller Avbryt. Ta en titt på koden:
Privat underarbeidsbok_BeforeClose(Avbryt som boolsk)
'Trinn 1: Aktiver meldingsboksen og start kontrollen
Velg Case MsgBox("Lagre og lukk?", vbOKCancel)
'Trinn 2: Avbryt-knappen trykket, så avbryt lukkingen
Case Is = vbCancel
Avbryt = Sant
'Trinn 3: OK-knappen trykket, så lagre arbeidsboken og lukk
Case Is = vbOK
ActiveWorkbook.Save
Trinn 4: Lukk Select Case-uttalelsen
Avslutt Velg
End Sub
I trinn 1 aktiverer du meldingsboksen som tilstandssjekk for Select Case-erklæringen. Du bruker argumentet vbOKCancel for å sikre at OK- og Cancel-knappene vises som valg.
I trinn 2, hvis brukeren klikket Avbryt i meldingsboksen, ber makroen Excel om å avbryte Workbook_Close-hendelsen ved å sende True til Cancel Boolean.
Hvis brukeren klikket på OK-knappen i meldingsboksen, trer trinn 3 i kraft. Her ber du Excel om å lagre arbeidsboken. Og fordi du ikke satte Cancel Boolean til True, fortsetter Excel med avslutningen.
I trinn 4 lukker du ganske enkelt Select Case-erklæringen. Hver gang du instansierer en Select Case, må du lukke den med en tilsvarende End Select.
Hvordan bruke makroen
For å implementere denne makroen, må du kopiere og lime den inn i Workbook_BeforeClose hendelseskodevinduet. Ved å plassere makroen der kan den kjøres hver gang du prøver å lukke arbeidsboken:
Aktiver Visual Basic Editor ved å trykke Alt+F11.
I prosjektvinduet finner du navnet på prosjektet/arbeidsboken og klikker på plusstegnet ved siden av for å se alle arkene.
Klikk på Denne arbeidsboken.
I rullegardinlisten Begivenhet velger du FørLukk-hendelsen.
Skriv eller lim inn koden i den nyopprettede modulen.
Skriv inn koden din i Workbook BeforeClose-hendelsen.