Voer macro uit als er een wijziging is aangebracht op het blad in het opgegeven bereik

Inhoudsopgave:

Anonim

Tijdens uw VBA-praktijken zou u de noodzaak krijgen om macro's uit te voeren wanneer een bepaald bereik of cel verandert. In dat geval gebruiken we de change-gebeurtenis om macro's uit te voeren wanneer een wijziging in een doelbereik wordt aangebracht. Gebeurtenissen in VBA stellen ons in staat om de macro's uit te voeren wanneer een bepaalde gebeurtenis plaatsvindt.

Syntaxis VBA-bereikwijzigingsgebeurtenis

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("your_range")) Is niets Noem dan your_macro End If End Sub

Het Evenement werkt niet in modules. U moet ze in objecten schrijven (werkblad, grafieken, werkmap).

Lat's hebben een voorbeeld om te leren hoe een macro moet worden uitgevoerd wanneer een wijziging wordt aangebracht in een opgegeven bereik.

Voorbeeld: voer een VBA-macro uit wanneer er een wijziging is aangebracht in het bereik A2:A100

Eerst kiezen we het blad waarop de gebeurtenis zal plaatsvinden. Dubbelklik op dat blad in de VBA-editor en kopieer onderstaande code of generieke code hierboven en breng wijzigingen aan volgens uw vereisten.

In dit voorbeeld wil ik een macro/VBA-code uitvoeren wanneer er een wijziging wordt aangebracht in bereik A2: A100 op blad 2. Hiervoor dubbelklik ik op blad2 in projectverkenner. Het opent de codeerpagina voor dat blad. U kunt met de rechtermuisknop op het blad klikken en op de weergavecode klikken om hetzelfde te doen.

Ik moet de wijzigingsgebeurtenis gebruiken. Daarvoor gebruiken we de standaard subroutine Worksheet_Change (ByVal Target As Range). Het wordt geactiveerd wanneer een opgegeven wijziging wordt aangebracht. Dus onze code is deze:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2:A100")) Is niets, bel dan TestEvent End If End Sub 

Wanneer u wijzigingen aanbrengt in bereik A2:A100 op Blad2, wordt de subroutine TestEvent aangeroepen, zoals u kunt zien in de gif hierboven.

Het TestEvent is de openbare subroutine in module2. Er verschijnt gewoon een bericht dat de gebeurtenis werkt.

Sub TestEvent() MsgBox "Event werkt!" Einde sub 

Hoe werkt het?

We hebben een voorwaarde gesteld:

Als niet snijden (doel, bereik ("A2: A100")) is niets dan

Hier Intersect(Target, Range("A2:A100")) Is Nothing retourneert True als er geen wijziging is aangebracht in Range A2:A100. We hebben een Not-operator voor deze instructie geplaatst die de uitvoer van "Intersect(Target, Range ("A2:A100"))) omkeert. Als er dus geen wijziging wordt aangebracht in het bereik A2:A100, retourneert de expressie Falls en krijgt de sub TestEvent de aanroep niet. Als u een wijziging aanbrengt in een cel in het bereik A2:A100, retourneert de expressie True en vindt de gebeurtenis plaats. En dat is wat hier gebeurt.

Opmerking: U kunt elke subroutine in dit blok plaatsen. Het kan van elke module zijn. Maar het zou een openbare subroutine moeten zijn. U kunt het bereik in elke mate instellen. Het hele blad is de limiet.

Dus ja jongens, dit is hoe je een subroutine kunt aanroepen of een macro / VBA-code kunt uitvoeren wanneer een wijziging wordt aangebracht in een bepaald bereik. Het was een eenvoudig voorbeeld van een evenement. Deze gebeurtenis wordt alleen geactiveerd als de wijziging op tekst is gebaseerd. Met tekstgebaseerd bedoel ik dat als je iets in de cellen schrijft of verwijdert, de gebeurtenis wordt geactiveerd. Als u de opmaak van de cellen wijzigt, wordt deze niet geactiveerd. Er zijn andere methoden om dat te doen.

Ik hoop dat het nuttig was. Als je vragen hebt over dit VBA-onderwerp of een ander Excel-gerelateerd onderwerp, laat het me dan weten in de opmerkingen hieronder. En bekijk onze andere gerelateerde en populaire berichten die hieronder worden vermeld.

Macro uitvoeren wanneer er een wijziging op het blad wordt aangebracht| Dus om uw macro uit te voeren wanneer het blad wordt bijgewerkt, gebruiken we de werkbladgebeurtenissen van VBA.

Eenvoudigste VBA-code om huidige rij en kolom te markeren met behulp van| Gebruik dit kleine VBA-fragment om de huidige rij en kolom van het blad te markeren.

De werkbladgebeurtenissen in Excel VBA| De werkbladgebeurtenis is erg handig als u wilt dat uw macro's worden uitgevoerd wanneer een opgegeven gebeurtenis op het werkblad plaatsvindt.

Populaire artikels:

50 Excel-snelkoppelingen om uw productiviteit te verhogen | Word sneller in uw taak. Met deze 50 sneltoetsen werk je 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.