Der er tidspunkter, hvor du ikke ønsker, at en bruger lukker en Excel-projektmappe uden at indtaste et bestemt stykke data. I disse situationer ville det være nyttigt at nægte brugeren muligheden for at lukke projektmappen, indtil målcellen er udfyldt (som vist her). Det er her, denne smarte makro kommer ind.
Undgå lukning, indtil en specifik celle er udfyldt.
Sådan fungerer makroen
Denne kode 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. Denne makro kontrollerer, om målcellen (celle C7, i dette tilfælde) er tom. Hvis den er tom, annulleres lukkeprocessen. Hvis C7 ikke er tom, gemmes og lukkes projektmappen:
Privat underarbejdsbog_BeforeClose(Annuller som boolesk)
Trin 1: Kontroller, om celle C7 er tom
If Sheets("Sheet1").Range("C7").Value = " Then
Trin 2: Hvis cellen er tom, annuller lukningen og fortæl brugeren det
Annuller = Sandt
MsgBox "Celle C7 må ikke være tom"
Trin 3: Hvis cellen ikke er tom, skal du gemme og lukke
Andet
ActiveWorkbook.Close SaveChanges:=True
Afslut Hvis
Slut Sub
Trin 1 kontrollerer, om C7 er tom.
Hvis C7 er tom, træder trin 2 i kraft, og lukkeprocessen annulleres ved at overføre True til Annuller Boolean. Trin 2 aktiverer også en beskedboks, der giver brugeren besked om hans eller hendes dumhed (godt, det er egentlig ikke helt så barskt).
I trin 3, hvis celle C7 ikke er tom, gemmes og lukkes projektmappen.
Sådan bruger du makroen
For at implementere denne makro skal du kopiere og indsætte den i vinduet Workbook_BeforeClose begivenhedskode. Ved at placere makroen her 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.