Makroen præsenteret her er en glimrende måde at beskytte brugere mod utilsigtet at lukke deres fil, før de gemmer. Når den er implementeret, sikrer denne makro, at Excel automatisk gemmer projektmappen, før den lukkes.
Excel vil normalt advare brugere, der forsøger at lukke en ikke-gemt projektmappe, hvilket giver dem mulighed for at gemme, før de lukkes. Men mange brugere kan blæse forbi advarslen og utilsigtet klikke på Nej, hvilket beder Excel om at lukke uden at gemme. Med denne makro beskytter du dig mod dette ved automatisk at gemme før lukning.
Sådan fungerer makroen
Koden udløses af projektmappens BeforeClose-hændelse. Når du forsøger at lukke projektmappen, udløses denne hændelse og kører koden indeni. Kernen i koden er enkel - den spørger brugerne, om de vil lukke projektmappen. Makroen vurderer derefter, om brugeren har klikket på OK eller Annuller.
Den besked, du ser, når du forsøger at lukke projektmappen.
Evalueringen foretages med en Select Case-erklæring. Select Case-sætningen er et alternativ til If-Then-Else-sætningen, som giver dig mulighed for at udføre tilstandstjek i dine makroer. Den grundlæggende konstruktion af en Select Case-erklæring er enkel:
Vælg Sag
Sagen er =
Sagen er=
Sagen er=
Afslut Vælg
Med en Select Case-erklæring kan du udføre mange betingede kontroller. I dette tilfælde tjekker du blot for OK eller Annuller. Tag et kig på koden:
Privat underarbejdsbog_BeforeClose(Annuller som boolesk)
Trin 1: Aktiver meddelelsesboksen og start kontrollen
Vælg Case MsgBox("Gem og luk?", vbOKCancel)
Trin 2: Annuller knappen trykket, så annuller lukningen
Sagen er = vbCancel
Annuller = Sandt
Trin 3: OK-knappen trykket, så gem projektmappen og luk
Case Is = vbOK
ActiveWorkbook.Save
'Trin 4: Luk din Select Case-erklæring
Afslut Vælg
Slut Sub
I trin 1 aktiverer du meddelelsesboksen som tilstandskontrol for Select Case-erklæringen. Du bruger argumentet vbOKCancel for at sikre, at knapperne OK og Cancel vises som valg.
I trin 2, hvis brugeren klikkede på Annuller i meddelelsesboksen, fortæller makroen Excel om at annullere Workbook_Close-hændelsen ved at overføre True til Annuller Boolean.
Hvis brugeren klikkede på knappen OK i meddelelsesboksen, træder trin 3 i kraft. Her beder du Excel om at gemme projektmappen. Og fordi du ikke har indstillet Annuller Boolean til True, fortsætter Excel med afslutningen.
I trin 4 lukker du blot Select Case-erklæringen. Hver gang du instansierer en Select-sag, skal du lukke den ud med en tilsvarende End Select.
Sådan bruger du makroen
For at implementere denne makro skal du kopiere og indsætte den i vinduet Workbook_BeforeClose begivenhedskode. Hvis du placerer makroen der, kan den køre hver gang du prøver at lukke projektmappen:
Aktiver Visual Basic Editor ved at trykke på Alt+F11.
Find dit projekt-/projektmappenavn i projektvinduet og klik på plustegnet ved siden af det for at se alle arkene.
Klik på ThisWorkbook.
På rullelisten Begivenhed skal du vælge begivenheden Før Luk.
Indtast eller indsæt koden i det nyoprettede modul.
Indtast din kode i begivenheden Workbook BeforeClose.