• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro uitvoeren bij cel wijziging

Status
Niet open voor verdere reacties.

Stone52

Gebruiker
Lid geworden
11 dec 2004
Berichten
320
Denkers,

Is het mogelijk om een macro uit te laten voeren op het moment dat de waarde van een cel wordt gewijzigd ?
Zo ja: hoe ?
 
Volgende code opnemen in de programmacode van het blad waar de wijziging plaatsvind
(rechtermuisknop op tabblad en dan programmacode weergeven kiezen).


Private Sub Worksheet_Change(ByVal Target As Range)
gewijzigdecel = Target.Address ' om te zien welke cel gewijzigd is, kan eventueel op getest worden
'rest van de code
End Sub
 
Hans,

Bedankt voor de reactie. Je antwoord is mij niet duidelijk. Het gaat mij om 1 specifieke cel: als die gewijzigd wordt dan moet ik een macro uitvoeren (call).
Op andere cellen op dat werkblad mag het geen effect hebben.

Kan je iets specifieker ingaan op "gewijzigdecel = Target.Address" en de code daarbij ?
 
Hoi Stone,

Voorbeeldje van Hans' oplossing:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A5") > 100 Then Range("C5") = Range("A5")
End Sub

Als A5 groter wordt dan 100 komt de waarde van A5 in C5 te staan, maar hier kan ook jou macro staan.

Jeroen
 
de macro Private Sub Worksheet_Change(ByVal Target As Range) wordt uitgevoerd voor elke celwijziging op je blad.

stel dat de macro alleen uitgevoerd moet worden bij wijziging van cel b10, kan je testen of gewijzigdecel gelijk is aan b10. als dit het geval is kun je de macro uitvoren ander doet hij niets.

voorbeeld:
Private Sub Worksheet_Change(ByVal Target As Range)
gewijzigdecel = Target.Address ' om te zien welke cel gewijzigd is, kan eventueel op getest worden
if gewijzigdecel= "$B$10" then
call jouwmacro
end if
End Sub
 
Jeroen en Hans,

Ik zit met de prangende vraag hoe de werking verloopt als ik het werkblad activeer en "mijn waarde" heeft bv de waarde 1 waarna ik "mijn waarde" de waarde 2 geef. Hoe (welke velden) vergelijk ik om te kunnen constateren of "mijn waarde" is veranderd ?
 
Hoi Stone,

Schijf in dezelfde macro de waarde weg naar een onbelangrijke cel en vergelijk deze twee.

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A5") <> Range("AA5") Then Range("C5") = Range("A5") : Range("AA5")=Range("A5")
End Sub

Jeroen
 
Laatst bewerkt:
De macro wordt uitgevoerd als er een cel wordt gewijzigd in je werkblad. (ongeacht welke cel).

Door te kijken welke cel er gewijzigd is en je eigen macro aleen uit te voeren als dit de cel met 'mijn waarde' is, bereik je wat je wil.
 
Hoi Stone & Hans,

Het voordeel van mijn macro-opzet is dat er alleen gereageerd wordt als een specifieke cel van waarde veranderd. Voor eenvoudige macro's is het geen probleem, ik heb laatst een macro gemaakt dat een 10-tal uren moest rekenen. Dat wil je niet dat dat bij iedere wijziging in een cel gebeurt!

Jeroen
 
Jeroen en Hans,

Beiden bedankt voor jullie reacties / bijdrage.

Ondertussen zelf al ge-experimenteerd en de oplossing gevonden. Deze komt inderdaad overeen (bijna letterlijk) met die van Jeroen.
:) :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan