Vba: hoe u een macro uitvoert wanneer een celwaarde verandert


U kunt de volgende syntaxis in VBA gebruiken om een macro uit te voeren wanneer een specifieke celwaarde verandert:

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

Dit specifieke voorbeeld zorgt ervoor dat de macro MultiplyMacro wordt uitgevoerd wanneer de waarde van cel A1 verandert.

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: Voer een macro uit wanneer een celwaarde verandert met behulp van VBA

Stel dat we de volgende macro maken met de naam MultiplyMacro die de waarden in de cellen A1 en B1 vermenigvuldigt en de resultaten weergeeft in cel C1 :

 SubMultiplyMacro ()
    Range(" C1 ") = Range(" A1 ") * Range(" B1 ")
End Sub

Stel bijvoorbeeld dat we de waarde 12 in cel A1 hebben en de waarde 3 in cel B1 .

Als we deze macro uitvoeren, krijgen we het volgende resultaat:

Stel nu dat we deze macro automatisch willen uitvoeren wanneer de waarde van cel A1 verandert.

Om dit te doen, kunnen we met de rechtermuisknop op de bladnaam klikken en vervolgens op Code weergeven klikken:

In het codebewerkingsvenster dat verschijnt, kunt u de volgende code plakken:

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

De volgende schermafbeelding laat zien hoe u dit in de praktijk kunt doen:

We kunnen dan de VB-editor sluiten.

Wanneer we nu de waarde in cel A1 wijzigen, wordt de macro genaamd MultiplyMacro automatisch uitgevoerd en wordt vermenigvuldiging uitgevoerd met de nieuwe waarde in cel A1 .

Stel dat we bijvoorbeeld de waarde van cel A1 wijzigen in 10 . Zodra we de waarde wijzigen en op Enter drukken, wordt de macro uitgevoerd:

De macro vermenigvuldigt 10 met 3 en geeft het resultaat weer in cel C2 .

Opmerking : als u de macro wilt uitvoeren wanneer een cel in een specifiek bereik verandert, kunt u de volgende syntaxis gebruiken:

 Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range(" A1:B1 ")) Is Nothing Then
        Call MultiplyMacro
    End If
End Sub

Hierdoor wordt de macro MultiplyMacro uitgevoerd als een cel in het bereik A1:B1 verandert.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in VBA kunt uitvoeren:

VBA: het aantal vellen in een werkmap tellen
VBA: gegevens uit een andere werkmap extraheren
VBA: nieuwe bladen toevoegen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert