I Excel kanske du arbetar med data som är så känsliga att du vill spara varje gång en viss cell eller cellområde ändras. Detta makro låter dig definiera ett cellintervall som, när det ändras, tvingar arbetsboken att sparas.
I exemplet som visas vill du att arbetsboken ska sparas när en redigering görs i någon av cellerna i intervallet C5:C16.
Att ändra en cell i C5:C16 tvingar arbetsboken att sparas.
Hur makrot fungerar
Hemligheten med denna kod är Intersect-metoden. Eftersom du inte vill spara kalkylbladet när någon gammal cell ändras, använder du Intersect-metoden för att avgöra om målcellen (cellen som ändrades) korsar intervallet som anges som triggerintervall (C5:C16 i det här fallet) .
Metoden Intersect returnerar en av två saker: ett Range-objekt som definierar skärningspunkten mellan de två givna områdena, eller ingenting. Så i huvudsak måste du kasta målcellen mot Intersect-metoden för att kontrollera värdet på Ingenting. Då kan du bestämma om du vill spara arbetsboken.
Private Sub Worksheet_Change(ByVal Target As Range)
'Steg 1: Skärs den ändrade räckvidden?
Om Intersect(Target, Range("C5:C16")) är ingenting då
'Steg 2: Om det inte finns någon korsning, avsluta proceduren
Avsluta Sub
'Steg 3: Om det finns en korsning, spara arbetsboken
Annan
ActiveWorkbook.Save
'Steg 4: Stäng If-satsen
Avsluta om
Avsluta Sub
I steg 1 kontrollerar du helt enkelt om målcellen (cellen som har ändrats) ligger inom det intervall som specificeras av Intersect-metoden. Ett värde på Ingenting betyder att målcellen ligger utanför det angivna intervallet.
Steg 2 tvingar makrot att stoppa och avsluta proceduren om det inte finns någon skärning mellan målcellen och det specificerade området.
Om det finns en korsning, aktiverar steg 3 Spara-metoden för den aktiva arbetsboken och skriver över den tidigare versionen.
I steg 4 stänger du helt enkelt If-satsen. Varje gång du startar en If-Then-Else-kontroll måste du stänga den med en motsvarande End If.
Hur man använder makrot
För att implementera detta makro måste du kopiera och klistra in det i fönstret Worksheet_Change-händelsekod. Genom att placera makrot här kan det köras varje gång du gör någon ändring i arket:
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å arket från vilket du vill aktivera koden.
I listrutan Händelse väljer du Ändra händelse.
Skriv eller klistra in koden i den nyskapade modulen och ändra intervalladressen så att den passar dina behov.
Ange din kod i händelsen Worksheet Change.