Du kanske vill köra ditt makro-/VBA -snutt när en cell ändrar dess värde, när ett dubbelklick händer, när ett ark väljs etc. I alla dessa fall använder vi Worksheet Event Handler. Eventhanteraren hjälper oss att köra VBA -kod när en viss händelse inträffar.
I den här artikeln kommer vi att lära oss kort om varje arbetsbladshändelsehanterare.
Vad är en Worksheets Event Handler?
En kalkylbladshändelsehanterare är en delrutan som är lokal för en kalkylbladsmodul.
Var skriver man arbetsbladshändelsekod?
Arbetsbladet Händelser skrivs endast i arkobjekt. Om du skriver en kalkylhändelse i någon modul eller klassmodul kommer det inte att finnas något fel men de kommer bara inte att fungera.
För att skriva i bladobjektet. Dubbelklicka på den eller högerklicka och klicka på visningskoden. Kodskrivningsområdet visas.
Hur skriver man kod för en specifik händelse i kalkylbladet?
Nu när du är i redigeringsläget kommer du att se allmänna i rullgardinsmenyn längst upp till vänster. Klicka på rullgardinsmenyn och välj kalkylblad. I rullgardinsmenyn längst upp till höger visas alla händelser. Välj det du behöver och en skelettkod för den händelsen kommer att skrivas åt dig.
Varje händelse har ett fast förfarandenamn. Detta är de reserverade underrutinnamnen. Du kan inte använda dem för andra underrutiner på ett ark. I en modul kommer de att fungera som en normal subrutin.
Viktig: Varje delprogram från listan körs på den angivna händelsen.
En typ av arbetsbladshändelseprocedur kan bara skrivas en gång på ett ark. Om du skriver två samma händelsehanteringsprocedurer på ett ark kommer det att resultera i ett fel och ingen av dem kommer att köras. Naturligtvis kommer felet att vara tvetydiga underrutiner.
Låt oss lära oss kort om var och en av händelserna.
1. DeWorksheet_Change (ByVal Target As Range)Händelse
Denna händelse utlöses när vi gör ändringar i innehållande kalkylblad (formatering utesluts). Om du vill göra något om någon ändring görs i hela arket kommer koden att vara:
Private Sub Worksheet_Change (ByVal Target As Range) 'do somehting Msgbox "done something" End Sub
"Målet" är alltid den aktiva cellen.
Ett annat exempel: Du kanske vill ange datum och tid i cell B1 om A1 ändras. I så fall använder vi händelsebladet_byte. Koden skulle se ut så här:
Private Sub Worksheet_Change (ByVal Target As Range) If Mål.Address = "$ A $ 1" Sedan Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If End Sub
Detta riktar sig endast till cellen A1.
Om du vill rikta in dig på ett område använder du exemplet nedan:
Kör makro om någon ändring görs på blad i specificerat intervall
2. DeWorksheet_SelectionChange (ByVal Target As Range)Händelse
Som namnet antyder utlöses denna händelse när urvalet ändras. Med andra ord, om markören finns i cell A1 och den flyttar till någon annan cell, kommer koden i den här subrutinen att köras.
Koden nedan kommer att ändra den aktiva cellens färg om den ändras och om den är en jämn rad.
Private Sub Worksheet_SelectionChange (ByVal Target As Range) If Target.Row Mod 2 = 0 Then Target.Interior.ColorIndex = 22 End If End Sub
Nu, när min markör kommer att flytta på jämn rad, kommer den att vara färgad. Udda radceller sparas.
Ett annat exempel på Worksheet_SelectionChange -händelsen:
Enklaste VBA -kod för att markera aktuell rad och kolumn med
3. De Worksheet_Activate () Händelse
Denna händelse utlöses när händelsekoden som innehåller blad aktiveras. Skelettkoden för denna händelse är:
Private Sub Worksheet_Activate () End Sub
Ett enkelt exempel visar bladnamnet när det väljs.
Private Sub Worksheet_Activate () MsgBox "You are on" & ActiveSheet.Name Avsluta Sub
Så snart du kommer på arket som innehåller den här koden, kommer händelsen att köras och ett meddelande kommer att visas "Du är på bladets namn" (blad 2 finns i mitt fall).
4. De Arbetsblad_Deaktivera () Händelse
Denna händelse utlöses när koden innehåller bladet lämnas. Med andra ord, om du vill göra något, som att dölja rader eller något när du lämnar arket, använd den här VBA -händelsen. Syntaxen är:
Private Sub Worksheet_Deactivate () 'din kod' Avsluta Sub
Nedanstående exempel Worksheet_Deativate -händelse kommer helt enkelt att visa ett meddelande om att du har lämnat huvudarket när du lämnar det här bladet.
Private Sub Worksheet_Deactivate () MsgBox "Du lämnade huvudarket" Avsluta sub
5. De Worksheet_BeforeDelete ()Händelse
Den här händelsen utlöses när du bekräftar borttagningen av VBA -händelsearket. Syntaxen är enkel:
Private Sub Worksheet_BeforeDelete () End Sub
Koden nedan frågar dig om du vill kopiera innehållet i bladet som ska raderas.
Private Sub Worksheet_BeforeDelete () ans = MsgBox ("Vill du kopiera innehållet i detta blad till ett nytt blad?", VbYesNo) If ans = True Då 'kod att kopiera End If End Sub
6. De Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel as Boolean) Händelse
Denna händelse utlöses när du dubbelklickar på den riktade cellen. Syntaxen för denna VBA -kalkylhändelse är:
Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Avsluta Sub
Om du inte ställer in målcellen eller intervallet avfyras det vid varje dubbelklick på arket.
Avbryt -variabeln är en boolsk variabel. Om du ställer in det True kommer standardåtgärden inte att hända. Det betyder att om du dubbelklickar på cellen kommer den inte in i redigeringsläget.
Koden nedan gör att cellen fylls med en färg om du dubbelklickar på en cell.
Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Interior.ColorIndex = 7 End Sub
Koden nedan riktar sig mot cellen A1. Om den redan är fylld med den angivna färgen försvinner den färgen. Det är ungefär som en liknande knapp eller kryssruta.
Privat del Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$ A $ 1" Then Cancel = True If Target.Interior.ColorIndex = 4 Then Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 End If Slut Om Slut Sub
7. De Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Händelse
Denna händelse utlöses när du högerklickar på den riktade cellen. Syntaxen för denna VBA -kalkylhändelse är:
Privat del Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True '' your code 'End Sub
Koden nedan fyller cellen med värde 1 om du högerklickar på den. Det kommer inte att visa standard högerklickalternativ eftersom vi har ställt in "Avbryt" -operatorn till True.
Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Value = 1 End Sub
8. De Worksheet_Calculate () Händelse
Om du vill att något ska hända när en excel beräknar ett ark, använd den här händelsen. Det kommer att aktiveras när excel beräknar ett ark. Syntaxen är enkel:
Private Sub Worksheet_Calculate () '' din kod 'Avsluta Sub
6. De Worksheet_FollowHyperlink (ByVal Target As Hyperlink)Händelse
Denna procedur körs när du klickar på en hyperlänk på arket. Den grundläggande syntaxen för denna händelsehanterare är:
Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink) '' din kod 'Avsluta Sub
Du kan ställa in målhyperlänken om du vill. Om du inte ställer in målhyperlänken körs den om du klickar på någon hyperlänk på koden som innehåller arket.
Så ja grabbar, det här var några grundläggande arbetsbladshändelser som kommer att vara praktiska om du känner till dem. Nedan följer några relaterade artiklar som du kanske vill läsa.
Om du har några tvivel angående denna artikel eller någon annan Excel/VBA -relaterad artikel, låt oss veta i kommentarfältet nedan.
Använda ändringshändelse för kalkylblad för att köra makro när någon ändring görs| Så för att köra ditt makro när arket uppdateras använder vi Arbetsbladshändelser i VBA.
Kör makro om någon ändring görs på blad i specificerat intervall| Använd den här VBA -koden för att köra din makrokod när värdet i ett visst område ändras. Den upptäcker alla ändringar som gjorts i det angivna intervallet och avfyrar händelsen.
Enklaste VBA -kod för att markera aktuell rad och kolumn med | Använd det här lilla VBA -utdraget för att markera den aktuella raden och kolumnen i arket.
Populära artiklar:
50 Excel -genvägar för att öka din produktivitet | Bli snabbare på din uppgift. Dessa 50 genvägar gör ditt arbete ännu snabbare i Excel.
VLOOKUP -funktionen i Excel | Detta är en av de mest använda och populära Excel -funktionerna som används för att leta upp värde från olika intervall och ark.
COUNTIF i Excel 2016 | Räkna värden med förhållanden med denna fantastiska funktion. Du behöver inte filtrera dina data för att räkna specifikt värde. Countif -funktionen är avgörande för att förbereda din instrumentpanel.
Hur man använder SUMIF -funktionen i Excel | Detta är en annan viktig instrumentpanel. Detta hjälper dig att summera värden på specifika förhållanden.