• 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 cel kleuren bij wijziging waarden

Status
Niet open voor verdere reacties.

peter59

Terugkerende gebruiker
Lid geworden
21 mei 2007
Berichten
2.715
Besturingssysteem
Windows 11
Office versie
Office 365
Hallo,

Vooraleerst de beste wensen voor 2017 en nog belangrijker, een heel goede gezondheid.

Ik gebruik een code die bij elke wijziging, kopiëren, filteren enz. een cel/rij kleurt.
Het is mijn bedoeling dat alleen de cel kleurt waar ook daadwerkelijk iets verandert dus waar waarden worden aangepast.
Wat dient ik dan in onderstaande code te wijzigen cq toe te voegen?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Interior.ColorIndex = 27
End Sub

Dank alvast voor jullie medewerking.

Mvg
Peter
 
En wat gaat er niet goed bij gebruik van die code?
 
Hallo Edmoor

Bij het kopiëren vanuit de formulebalk van cel A2 (zie voorbeeld) wordt bij het kiezen van een andere cel de cel in A2 gekleurd terwijl er niets is veranderd.

Mvg
Peter
 

Bijlagen

Dat klopt. Zodra een cel in edit mode gaat en er weer aan treedt op dat moment het Change event van het werkblad in werking.
 
Hallo Edmoor

Dank voor de info.
Is dit niet op de een of andere manier te omzeilen?
Neem me niet kwalijk maar nu roep ik maar wat zoals Change value?

Mvg
Peter
 
Peter, je kan met event Worksheet_SelectionChange , een waarde copy maken van de target.
dan kun je bij de event Worksheet_Change zelf kijken of er een waarde veranderd is.

succes
 
Extra info daarbij. Gebruik daarvoor een globale variabele.
 
Of zo

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
With Application
  .EnableEvents = False
  tnew = Target
  .Undo
  told = Target
  Target = tnew
  If tnew <> told Then Target.Interior.ColorIndex = 27
  .EnableEvents = True
End With
End Sub
 
Hallo VenA

Dat is hem.
Ik heb n.a.v. de tips van Edmoor en Sylvestor-Ponte gegoogeld maar kwam er helaas niet uit.
Ik ben n.l. een leek betreffende VBA.

Nogmaals dank.

Mvg
Peter
 
Ik heb n.a.v. de tips van Edmoor en Sylvestor-Ponte gegoogeld maar kwam er helaas niet uit.
Dan had je zoiets kunnen maken
Code:
Public toud
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  toud = Target
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Target <> toud Then Target.Interior.ColorIndex = 27
End Sub
 
VenA,

Oké, euhh, jha.
Zo blijkt maar weer dat ik een behoorlijk analfabeet(VBA) ben betreffende de VBA codes.
Jou code krijg ik helaas niet helemaal "vertaald" zoals bijvoorbeeld "Public toud" ??
Maar ja, alles werkt zoals ik het voor ogen had.

Wederom dank.

Mvg
Peter
 
Dat is de globale variabele waar ik het over had. Een public variabele is een variable die je buiten je Subs declareerd en daarom geldig is voor alle Subs en Functions in dezelfde module als je dat met Dim doet of voor alle Subs en Functions in het hele VBA project als je dat met Public doet.

NB.
toud zal een zelf gekozen afkorting zijn die staat voor "Target Oud"
 
Laatst bewerkt:
Hallo Edmoor/VenA

@Edmoor
Met jouw uitleg kan ik iets mee.
M.a.w. ga ik hier gewoon eens mee experimenteren.

@VenA
Ik heb nooit geweten dat je met zelf gekozen afkortingen of what ever in macrocode's kon gebruiken.
Dus dit lijkt mij ook een leuke uitdaging.

Nogmaals dank voor het meedenken en de uitleg.

Mvg
Peter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan