Det er tider når du ikke vil at en bruker skal lukke ut en Excel-arbeidsbok uten å legge inn et bestemt datastykke. I disse situasjonene vil det være nyttig å nekte brukeren muligheten til å lukke arbeidsboken til målcellen er fylt ut (som vist her). Det er her denne smarte makroen kommer inn.
Forhindre lukking før en bestemt celle er fylt ut.
Hvordan makroen fungerer
Denne koden utløses av arbeidsbokens BeforeClose-hendelse. Når du prøver å lukke arbeidsboken, utløses denne hendelsen og kjører koden innenfor. Denne makroen sjekker om målcellen (celle C7, i dette tilfellet) er tom. Hvis den er tom, avbrytes lukkeprosessen. Hvis C7 ikke er tom, lagres og lukkes arbeidsboken:
Privat underarbeidsbok_BeforeClose(Avbryt som boolsk)
'Trinn 1: Sjekk om celle C7 er tom
If Sheets("Sheet1").Range("C7").Value = " Da
'Trinn 2: Hvis cellen er tom, avbryt lukkingen og fortell brukeren
Avbryt = Sant
MsgBox "Celle C7 kan ikke være tom"
'Trinn 3: Hvis cellen ikke er tom, lagre og lukk
Ellers
ActiveWorkbook.Close SaveChanges:=True
Slutt om
End Sub
Trinn 1 sjekker om C7 er tom.
Hvis C7 er tom, trer trinn 2 i kraft, og avbryter lukkeprosessen ved å sende True til Cancel Boolean. Trinn 2 aktiverer også en meldingsboks som varsler brukeren om hans eller hennes dumhet (vel, det er ikke fullt så hardt, egentlig).
I trinn 3, hvis celle C7 ikke er tom, lagres og lukkes arbeidsboken.
Hvordan bruke makroen
For å implementere denne makroen, må du kopiere og lime den inn i Workbook_BeforeClose hendelseskodevinduet. Ved å plassere makroen her 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.