Note: The other languages of the website are Google-translated. Back to English

Hoe een macro uitvoeren wanneer de celwaarde verandert in Excel?

Normaal gesproken kunnen we in Excel op de F5-toets of de knop Uitvoeren drukken om de VBA-code uit te voeren. Maar heb je ooit geprobeerd de specifieke macrocode uit te voeren wanneer een celwaarde verandert? In dit artikel zal ik enkele snelle trucs introduceren om met deze taak in Excel om te gaan.

Voer een macro uit of bel deze wanneer een specifieke celwaarde verandert met VBA-code

Voer een macro uit of roep deze aan wanneer een celwaarde verandert in een bereik met VBA-code


pijl blauw rechts bel Voer een macro uit of bel deze wanneer een specifieke celwaarde verandert met VBA-code

Om een ​​macrocode uit te voeren door een celwaarde te wijzigen, kan de volgende VBA-code u een plezier doen, doe dit als volgt:

1. Klik met de rechtermuisknop op de bladtab waarop u de macro wilt uitvoeren als de celwaarde verandert, en kies vervolgens Bekijk code vanuit het contextmenu en in het geopende Microsoft Visual Basic voor applicaties venster, kopieer en plak de volgende code in de lege module:

VBA-code: voer een macro uit wanneer de celwaarde verandert:

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

doc macro uitvoeren als cel verandert 1

Opmerking:: In de bovenstaande code, A1 is de specifieke cel waarop u de code wilt uitvoeren op basis van, Mijn macro is de macronaam die u wilt uitvoeren. Wijzig ze naar uw behoefte.

2. En sla vervolgens het codevenster op en sluit het, nu, wanneer u de waarde invoert of wijzigt in cel A1, wordt de specifieke code onmiddellijk geactiveerd.


pijl blauw rechts bel Voer een macro uit of roep deze aan wanneer een celwaarde verandert in een bereik met VBA-code

Als u een macro wilt uitvoeren of activeren wanneer een celwaarde in een celbereik verandert, kan de volgende code u helpen.

1. Klik met de rechtermuisknop op de bladtab waarop u de macro wilt uitvoeren als de celwaarde verandert, en kies vervolgens Bekijk code vanuit het contextmenu en in het geopende Microsoft Visual Basic voor applicaties venster, kopieer en plak de volgende code in de lege module:

VBA-code: voer een macro uit wanneer een celwaarde binnen een bereik verandert:

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

doc macro uitvoeren als cel verandert 2

Opmerking:: In de bovenstaande code, A1: B100 zijn de specifieke cellen waarop u de code wilt uitvoeren op basis van, Mijn macro is de macronaam die u wilt uitvoeren. Wijzig ze naar uw behoefte.

2. En sla vervolgens het codevenster op en sluit het. Als u nu een waarde invoert of wijzigt in een cel van A1: B100, wordt de specifieke code in één keer uitgevoerd.


Verwijder alle macro's uit meerdere werkmappen

Kutools for Excel's Batch Verwijder alle macro's hulpprogramma kan u helpen om alle macro's uit meerdere werkmappen te verwijderen als u dat nodig hebt. Download en gratis proef Kutools voor Excel nu!

Kutools for Excel: met meer dan 300 handige Excel-invoegtoepassingen, gratis te proberen zonder beperking in 30 dagen. Download en probeer nu gratis!


Gerelateerde artikelen:

Hoe macro automatisch uitvoeren voordat u afdrukt in Excel?

Hoe een macro uitvoeren op basis van de celwaarde in Excel?

Hoe een macro uitvoeren op basis van de geselecteerde waarde in de vervolgkeuzelijst in Excel?

Hoe voer ik een macro uit door op hyperlinks in Excel te klikken?

Hoe voer ik een macro uit wanneer het blad is geselecteerd uit een werkmap?


De beste tools voor kantoorproductiviteit

Kutools voor Excel lost de meeste van uw problemen op en verhoogt uw productiviteit met 80%

  • visfuik: Snel invoegen complexe formules, grafieken en alles wat je eerder hebt gebruikt; Versleutel cellen met wachtwoord; Maak een mailinglijst en stuur e-mails ...
  • Super Formula-balk (bewerk eenvoudig meerdere regels tekst en formule); Lay-out lezen (gemakkelijk grote aantallen cellen lezen en bewerken); Plakken in gefilterd bereik...
  • Voeg cellen / rijen / kolommen samen zonder gegevens te verliezen; Gespleten cellen inhoud; Combineer dubbele rijen / kolommen... Voorkom dubbele cellen; Vergelijk Ranges...
  • Selecteer Dupliceren of Uniek Rijen; Selecteer lege rijen (alle cellen zijn leeg); Super zoeken en fuzzy zoeken in veel werkboeken; Willekeurige selectie ...
  • Exacte kopie Meerdere cellen zonder de formuleverwijzing te wijzigen; Maak automatisch verwijzingen naar meerdere bladen; Plaats kogels, Selectievakjes en meer ...
  • Extraheer tekst, Tekst toevoegen, Verwijderen op positie, Ruimte verwijderen; Paging-subtotalen maken en afdrukken; Converteren tussen celinhoud en opmerkingen...
  • Super filter (bewaar en pas filterschema's toe op andere bladen); Geavanceerd sorteren per maand / week / dag, frequentie en meer; Speciaal filter door vet, cursief ...
  • Combineer werkmappen en werkbladen; Tabellen samenvoegen op basis van sleutelkolommen; Gegevens splitsen in meerdere bladen; Batch Converteer xls, xlsx en PDF...
  • Meer dan 300 krachtige functies. Ondersteunt Office / Excel 2007-2019 en 365. Ondersteunt alle talen. Eenvoudig te implementeren in uw onderneming of organisatie. Gratis proefperiode van 30 dagen met volledige functies. 60 dagen geld-terug-garantie.
kte tabblad 201905

Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker

  • Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, Publisher, Access, Visio en Project.
  • Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster in plaats van in nieuwe vensters.
  • Verhoogt uw productiviteit met 50% en vermindert elke dag honderden muisklikken!
officetab onderkant
Comments (17)
Nog geen beoordelingen. Beoordeel als eerste!
Deze opmerking is gemaakt door de moderator op de site
Deze module werkt niet voor mij. Er staat dat wanneer de WAARDE van de cel verandert, de code wordt uitgevoerd. Ik merk dat als ik in de cel typ, het werkt, maar als de waarde van de cel wordt gewijzigd door een formule, bijvoorbeeld een Counta, wordt het niet uitgevoerd. Heeft u een oplossing om een ​​macro uit te voeren wanneer de WAARDE verandert via een formule? Bedankt, Wayne
Deze opmerking is gemaakt door de moderator op de site
Zelfde probleem als Wayne. Alle hulp wordt zeer op prijs gesteld! Bedankt Ronnie
Deze opmerking is gemaakt door de moderator op de site
Hallo, jongens,

Ja, de bovenstaande code is alleen beschikbaar wanneer de celwaarde handmatig verandert. Als u een specifieke macrocode automatisch moet uitvoeren wanneer het formuleresultaat verandert met de relatieve cellen veranderen, ga dan naar dit artikel:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Probeer het alstublieft, en hoop op uw antwoord.
Deze opmerking is gemaakt door de moderator op de site
Het werkt niet... & ik verander de celwaarde handmatig. Is er een preconfiguratie die moet worden ingesteld?
Deze opmerking is gemaakt door de moderator op de site
Test dit in de procedure en gebruik als parameter


Private Sub Worksheet_Change (ByVal-doel als bereik)

MsgBox Target.Address & "-" en Target.AddressLocal

End Sub
Deze opmerking is gemaakt door de moderator op de site
Ja, de beschrijving zegt dat het moet worden geactiveerd wanneer de waarde verandert, maar de tweede code zegt dat het is wanneer de waarde niets is, en de eerste wordt ook niet geactiveerd wanneer een waarde verandert, maar als ik op F5 druk als ik naar de code kijk, wil het om MyMacro te activeren, maar lijkt niet zozeer te reageren op waardeveranderingen als van niets naar iets of het tegenovergestelde te gaan.
Deze opmerking is gemaakt door de moderator op de site
Dit werkte de eerste keer voor mij met behulp van een gegevensvalidatielijst die tekst weergeeft op basis van de lijstselectie.
Deze opmerking is gemaakt door de moderator op de site
Werkte geweldig voor mij! Mijn dilemma is dat ik wil dat het een relatieve referentiemacro is en dat er een verschil is tussen op enter drukken om de invoer op te slaan en verwijderen om de cel te wissen.
Deze opmerking is gemaakt door de moderator op de site
Hé, handige code. Ik zat te denken of het mogelijk was om een ​​ring te plaatsen rond de cellen die worden verwisseld als ze worden verwisseld? En elke maandag de cirkels resetten?
Deze opmerking is gemaakt door de moderator op de site
Hallo, Kevin,
Hier is geen idee om uw probleem op te lossen, als u een goede oplossing heeft, kunt u hier reageren.
Deze opmerking is gemaakt door de moderator op de site
Waar heb je deze staan? Ik heb de mijne in de map Modules, maar als ik een waarde in een cel van het werkblad plaats, krijg ik een compileerfout met de melding:
Verwachte variabele of procedure, geen module.

Gelieve te helpen.
Deze opmerking is gemaakt door de moderator op de site
Hallo, DrCartwright,
Sorry dat ik zo laat op je reageer.
Ja, zoals je zei, de macrocode zou zich in de module moeten bevinden en je moet de codenaam in je eigen naam veranderen, zoals in het volgende screenshot wordt getoond:
Deze opmerking is gemaakt door de moderator op de site
Hallo goede middag
quisiera saber el codigo para se active una macro cuando cambia el valor de una celda de una columna, pero este moed cambia por formule, sin que el usuario introduzca ningun valor.
Deze opmerking is gemaakt door de moderator op de site
Hallo allemaal, ik los het volgende probleem op: ik wil een titel van de website schrapen wanneer de link in kolom A is ingevoegd en deze waarde in de relevante cel (ernaast) in kolom B plaatsen. Het probleem lijkt te zijn dat zodra ik de website in kolom A, herhaalt de code de volledige lijst van kolom A2 tot "laatste rij" zoals gedefinieerd in de code. Is er een manier om kolom B alleen te wijzigen als een enkele kolom A is gewijzigd? Dwz als ik een link in kolom A36 plak, krijg ik een titel in B36, ongeacht of de cel zich in het midden van het gebruikte bereik of helemaal onderaan bevindt. Ik zou dit willen gebruiken zonder meerdere ingangen opnieuw te hoeven uitvoeren zoals het er nu uitziet; (dwz de lus "voor i =2 tot laatste rij")? Ook zou ik het onderstaande willen wijzigen van modulaire macro, dat wil zeggen sub, naar een privé-sub die reageert op verandering (dwz een snijfunctie) waarbij het 'doel' een cel uit het A: A-bereik is. Erg bedankt!


Sub get_title_header()



Dim wb als object

Dim document als object

Dim sURL als string

Dim laatste rij zo lang

laatste rij = Blad1.Cellen(Rijen.Aantal, "A").Einde(xlOmhoog).rij



Voor i = 2 Tot laatste rij

Stel wb = CreateObject ("internetExplorer.Application") in

sURL = Cellen(i, 1)



wb.navigeer sURL

wb.Zichtbaar = False



Terwijl wb.Bezet

DoEvents

zich begeven



''HTML-document

Stel doc = wb.document in



Cellen(i, 2) = doc.Titel



Bij fout Ga naar err_clear

Cellen(i, 3) = doc.GetElementsByTagName("h1")(0).innerText

err_clear:

Als Err <> 0 Dan

Err.Clear

Volgende hervatten

End If

wb.Stop

Bereik(Cellen(i, 1), Cellen(i, 3)).Kolommen.AutoAanpassen

Volgende i



End Sub




Dank je!
Deze opmerking is gemaakt door de moderator op de site
Ik probeer 1 werkmap (BOM) te automatiseren wanneer een andere werkmap (Parts Status) wijzigingen aanbrengt. Het onderdelenstatusbestand wordt elke 15 minuten bijgewerkt. Ik moet weten hoe ik een specifieke kolom kan automatiseren wanneer deze wijzigingen plaatsvinden? enig idee
Deze opmerking is gemaakt door de moderator op de site
Ik gebruik de onderstaande code om verschillende kolommen te verbergen, afhankelijk van de selectie in een vervolgkeuzelijst in cel C3, maar nadat een berekening ergens in het werkblad is uitgevoerd, worden ALLE kolommen UNHIDDEN. Hoe los ik dit op?

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)

Kolommen ("D:F").AutoAanpassen

Dim Proj1 als string
Dim Proj2 als string
Dim Proj3 als string
Dim Proj4 als string
Dim Proj5 als string
Dim Proj6 als string
Dim Proj7 als string
Dim Proj8 als string
Dim Proj9 als string
Dim Proj10 als string

Proj1 = ActiveWorkbook.Sheets("Projecten").Bereik("A1").Waarde
Proj2 = ActiveWorkbook.Sheets("Projecten").Bereik("A2").Waarde
Proj3 = ActiveWorkbook.Sheets("Projecten").Bereik("A3").Waarde
Proj4 = ActiveWorkbook.Sheets("Projecten").Bereik("A4").Waarde
Proj5 = ActiveWorkbook.Sheets("Projecten").Bereik("A5").Waarde
Proj6 = ActiveWorkbook.Sheets("Projecten").Bereik("A6").Waarde
Proj7 = ActiveWorkbook.Sheets("Projecten").Bereik("A7").Waarde
Proj8 = ActiveWorkbook.Sheets("Projecten").Bereik("A8").Waarde
Proj9 = ActiveWorkbook.Sheets("Projecten").Bereik("A9").Waarde
Proj10 = ActiveWorkbook.Sheets("Projecten").Bereik("A10").Waarde

Dim xRG als bereik
Dim xHRow als geheel getal
Stel xRG = Bereik ("C3") in
Als niet snijden (doel, xRG) is niets dan

Als Target.Value = Proj1 Dan
Application.Columns("E:F").Hidden = True
Application.Columns("D").Hidden = False

ElseIf Target.Value = Proj2 Dan
Bereik ("D:D, F:F"). Gehele kolom. Verborgen = True
Application.Columns("E").Hidden = False

End If
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Dit is precies waar ik naar op zoek was. Wanneer een gebruiker een waarde in een cel invoert, wordt een eenvoudige sorteermacro uitgevoerd. De macro werkt op zichzelf prima, maar ik krijg een ongeldig gebruik van een eigenschapsfout met de voorgestelde code.

Wat zou het probleem kunnen zijn?
Er zijn nog geen reacties geplaatst
Laat uw commentaar
Posten als gast
×
Beoordeel dit bericht:
0   Personages
Voorgestelde locaties