Misschien wilt u uw macro/VBA-fragment uitvoeren wanneer een cel de waarde verandert, wanneer er dubbelklikt, wanneer een blad wordt geselecteerd, enz. In al deze gevallen gebruiken we Worksheet Event Handler. De Event Handler helpt ons VBA-code uit te voeren wanneer een bepaalde gebeurtenis plaatsvindt.
In dit artikel zullen we kort leren over elke Worksheet Event Handler.
Wat is een Worksheets Event Handler?
Een worksheet event handler is een subroutine die lokaal is voor een werkbladmodule.
Waar schrijf je Worksheet Event Handler-code?
De werkbladgebeurtenissen worden alleen in werkbladobjecten geschreven. Als u een werkbladgebeurtenis schrijft in een module of klassemodule, zal er geen fout zijn, maar ze zullen gewoon niet werken.
Om in het werkbladobject te schrijven. Dubbelklik erop of klik met de rechtermuisknop en klik op code bekijken. Het codeschrijfgebied wordt weergegeven.
Hoe schrijf je code voor een specifieke gebeurtenis op het werkblad?
Wanneer u zich nu in de bewerkingsmodus bevindt, ziet u in het vervolgkeuzemenu in de linkerbovenhoek algemeen. Klik op de vervolgkeuzelijst en selecteer werkblad. Nu worden in de vervolgkeuzelijst rechtsboven alle evenementen weergegeven. Kies wat je nodig hebt en er wordt een skeletcode voor dat evenement voor je geschreven.
Elke gebeurtenis heeft een vaste procedurenaam. Dit zijn de gereserveerde namen van subroutines. Je kunt ze niet gebruiken voor andere subroutines op een blad. In een module werken ze als een normale subroutine.
Belangrijk: Elke subroutine uit die lijst wordt uitgevoerd op de opgegeven gebeurtenis.
Eén type werkbladgebeurtenisprocedure kan slechts één keer op één blad worden geschreven. Als u twee dezelfde procedures voor het afhandelen van gebeurtenissen op één blad schrijft, resulteert dit in een fout en wordt geen van beide uitgevoerd. Natuurlijk zal de fout dubbelzinnige subroutines zijn.
Laten we kort iets over elk van de gebeurtenissen te weten komen.
1. DeWorksheet_Change (ByVal-doel als bereik)Evenement
Deze gebeurtenis wordt geactiveerd wanneer we wijzigingen aanbrengen in het bevatten van werkbladen (opmaak uitgesloten). Als je iets wilt doen als er een wijziging is aangebracht in het hele blad, dan is de code:
Private Sub Worksheet_Change (ByVal Target As Range) 'doe iets Msgbox "iets gedaan" End Sub
Het "Doel" is altijd de actieve cel.
Nog een voorbeeld: misschien wilt u datum en tijd in cel B1 plaatsen als A1 verandert. In dat geval gebruiken we de gebeurtenis worksheet_change. De code zou er als volgt uitzien:
Private Sub Worksheet_Change (ByVal Target As Range) If Doelwit.Address = "$A$1" Then Range("B1").Value2 = Format(Now(), "uu:mm:ss") End If End Sub
Dit is alleen gericht op cel A1.
Als u een bereik wilt targeten, gebruikt u het onderstaande voorbeeld:
Voer macro uit als er een wijziging is aangebracht op het blad in het opgegeven bereik
2. DeWorksheet_SelectionChange (ByVal-doel als bereik)Evenement
Zoals de naam al doet vermoeden, wordt deze gebeurtenis geactiveerd wanneer de selectie verandert. Met andere woorden, als uw cursor zich in cel A1 bevindt en naar een andere cel gaat, wordt de code in deze subroutine uitgevoerd.
De onderstaande code verandert de kleur van de actieve cellen als deze verandert en als het een even rij is.
Private Sub Worksheet_SelectionChange (ByVal Target As Range) If Target.Row Mod 2 = 0 Then Target.Interior.ColorIndex = 22 End If End Sub
Wanneer mijn cursor nu op een even rij beweegt, wordt deze gekleurd. Oneven rij cellen worden gespaard.
Een ander voorbeeld van de Worksheet_SelectionChange-gebeurtenis:
Eenvoudigste VBA-code om huidige rij en kolom te markeren met behulp van
3. De Werkblad_Activeren() Evenement
Deze gebeurtenis wordt geactiveerd wanneer de gebeurteniscode met blad wordt geactiveerd. De skeletcode voor dit evenement is:
Privé subwerkblad_Activeren() Einde sub
Een eenvoudig voorbeeld is het tonen van de bladnaam wanneer deze wordt geselecteerd.
Private Sub Worksheet_Activate() MsgBox "U bent op" & ActiveSheet.Name End Sub
Zodra u op het blad komt dat deze code bevat, wordt het evenement uitgevoerd en krijgt u een bericht te zien dat "U staat op bladnaam" (blad2 is in mijn geval).
4. De Werkblad_Deactivate() Evenement
Deze gebeurtenis wordt geactiveerd bij het verlaten van het blad met code. Met andere woorden, als je iets wilt doen, zoals het verbergen van rijen of iets anders wanneer je het blad verlaat, gebruik dan deze VBA-gebeurtenis. De syntaxis is:
Private Sub Worksheet_Deactivate() 'jouw code' End Sub
Het onderstaande voorbeeld Worksheet_Deativate-gebeurtenis zal eenvoudig een bericht weergeven dat u het hoofdblad hebt verlaten, wanneer u dit blad verlaat.
Private Sub Worksheet_Deactivate() MsgBox "Je hebt het hoofdblad verlaten" End Sub
5. De Werkblad_BeforeDelete()Evenement
Deze gebeurtenis wordt geactiveerd wanneer u de verwijdering van het VBA-gebeurtenis-bevattende blad bevestigt. De syntaxis is eenvoudig:
Privé subwerkblad_BeforeDelete() Einde sub
De onderstaande code zal u vragen of u de inhoud van het te verwijderen blad wilt kopiëren.
Private Sub Worksheet_BeforeDelete() ans = MsgBox("Wilt u de inhoud van dit blad naar een nieuw blad kopiëren?", vbYesNo) If ans = True Dan 'code om te kopiëren End If End Sub
6. De Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Evenement
Deze gebeurtenis wordt geactiveerd wanneer u dubbelklikt op de beoogde cel. De syntaxis van deze VBA-werkbladgebeurtenis is:
Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) End Sub
Als u de doelcel of het bereik niet instelt, wordt deze geactiveerd bij elke dubbelklik op het blad.
De variabele Cancel is een booleaanse variabele. Als u deze instelt op True, vindt de standaardactie niet plaats. Het betekent dat als u dubbelklikt op de cel, deze niet in de bewerkingsmodus komt.
De onderstaande code zorgt ervoor dat de cel met een kleur wordt gevuld als u op een cel dubbelklikt.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Interior.ColorIndex = 7 End Sub
De onderstaande code is gericht op cel A1. Als het al is gevuld met de opgegeven kleur, verdwijnt de kleur. Het lijkt veel op een like-knop of selectievakje.
Privé Sub Werkblad_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$1" Then Cancel = True If Target.Interior.ColorIndex = 4 Dan Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 End If Einde Als Einde Sub
7. De Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Evenement
Deze gebeurtenis wordt geactiveerd wanneer u met de rechtermuisknop op de doelcel klikt. De syntaxis van deze VBA-werkbladgebeurtenis is:
Privé Sub Werkblad_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True ' 'your code' End Sub
De onderstaande code vult de cel met waarde 1 als u er met de rechtermuisknop op klikt. Het toont niet de standaard rechtsklikopties omdat we de operator "Annuleren" hebben ingesteld op True.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Value = 1 End Sub
8. De Werkblad_Berekenen() Evenement
Als je wilt dat er iets gebeurt wanneer een Excel een blad berekent, gebruik dan deze gebeurtenis. Het wordt geactiveerd wanneer Excel een blad berekent. De syntaxis is eenvoudig:
Private Sub Worksheet_Calculate() ' 'uw code' End Sub
6. De Worksheet_FollowHyperlink (ByVal-doel als hyperlink)Evenement
Deze procedure wordt uitgevoerd wanneer u op een hyperlink op het blad klikt. De basissyntaxis van deze gebeurtenishandler is:
Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink) ' 'uw code' End Sub
U kunt desgewenst de doelhyperlink instellen. Als u de doelhyperlink niet instelt, wordt deze uitgevoerd als u op een hyperlink op het codeblad klikt.
Dus ja jongens, dit waren enkele basiswerkbladgebeurtenissen die handig zullen zijn als je ze kent. Hieronder vindt u enkele gerelateerde artikelen die u misschien leuk vindt om te lezen.
Als je twijfels hebt over dit artikel of een ander Excel/VBA-gerelateerd artikel, laat het ons dan weten in de comments hieronder.
Werkbladwijzigingsgebeurtenis gebruiken om macro uit te voeren wanneer een wijziging is aangebracht| Dus om uw macro uit te voeren wanneer het blad wordt bijgewerkt, gebruiken we de werkbladgebeurtenissen van VBA.
Voer macro uit als er een wijziging is aangebracht op het blad in het opgegeven bereik| Gebruik deze VBA-code om uw macrocode uit te voeren wanneer de waarde in een opgegeven bereik verandert. Het detecteert elke wijziging die in het opgegeven bereik is aangebracht en activeert de gebeurtenis.
Eenvoudigste VBA-code om huidige rij en kolom te markeren met | Gebruik dit kleine VBA-fragment om de huidige rij en kolom van het blad te markeren.
Populaire artikels:
50 Excel-snelkoppelingen om uw productiviteit te verhogen | Word sneller in uw taak. Met deze 50 sneltoetsen werkt u nog sneller in Excel.
De VERT.ZOEKEN-functie in Excel | Dit is een van de meest gebruikte en populaire functies van Excel die wordt gebruikt om waarde op te zoeken uit verschillende bereiken en bladen.
AANTAL.ALS in Excel 2016 | Tel waarden met voorwaarden met behulp van deze geweldige functie. U hoeft uw gegevens niet te filteren om een specifieke waarde te tellen. Countif-functie is essentieel om uw dashboard voor te bereiden.
Hoe de SUMIF-functie in Excel te gebruiken? | Dit is een andere essentiële functie van het dashboard. Dit helpt u bij het optellen van waarden voor specifieke voorwaarden.