Een macro uitvoeren wanneer bepaalde cellen veranderen in Excel

Samenvatting

In Microsoft Excel kunt u een macro maken die alleen wordt opgeroepen wanneer een waarde wordt ingevoerd in een cel in een bepaald blad of in een blad dat momenteel is geopend.

Houd er echter rekening mee dat u macro's niet onnodig moet oproepen omdat deze de prestaties van Excel vertragen.

Meer informatie

Microsoft verstrekt programmeervoorbeelden alleen ter illustratie, zonder expliciete of impliciete garantie. daaronder mede begrepen, maar niet beperkt tot impliciete garanties met betrekking tot de verkoopbaarheid en/of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal VBScript, alsmede met de hulpprogramma's waarmee procedures worden gemaakt en waarmee fouten in procedures worden opgespoord. U kunt desgewenst contact opnemen met Microsoft Product Support Services voor uitleg over de functie van een bepaalde procedure. Microsoft Product Support Services is echter niet bereid de voorbeelden aan te passen om extra functies toe te voegen of om procedures te maken die aan uw specifieke eisen voldoen. In veel gevallen mag een macro alleen worden uitgevoerd als er voor een bepaald aantal cellen waarden zijn ingevoerd (in dit document de "sleutelcellen" genoemd). Om te voorkomen dat een grote macro elke keer wordt uitgevoerd wanneer een waarde in een cel van een blad wordt ingevoerd, moet u controleren of de ActiveCell een van de sleutelcellen is. Gebruik hiervoor de Intersect-methode op de ActiveCell en het bereik met de sleutelcellen om te controleren of de ActiveCell een van de belangrijkste cellen is. Als de ActiveCell zich in het bereik met de sleutelcellen bevindt, kunt u de macro oproepen.

Het maken van de Visual Basic-macro:

  1. Klik met de rechtermuisknop op tabblad Blad1 en klik op Code weergeven.

    Het moduleblad achter Blad1 wordt geopend.

  2. Typ de volgende code in het modulewerkblad:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim KeyCells As Range
    
    ' The variable KeyCells contains the cells that will
        ' cause an alert when they are changed.
        Set KeyCells = Range("A1:C10")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
               Is Nothing Then
    
    ' Display a message when one of the designated cells has been 
            ' changed.
            ' Place your code here.
            MsgBox "Cell " & Target.Address & " has changed."
    
    End If
    End Sub
    
  3. Klik op Sluiten en terugkeren naar Microsoft Excel in het menu Bestand.

Wanneer u een invoer typt in cellen A1:C10 op Blad1, wordt een berichtvenster weergegeven.