• 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.

Voorwaardelijke opmaak bij wijziging cel

Status
Niet open voor verdere reacties.

AABE

Gebruiker
Lid geworden
4 mrt 2008
Berichten
104
Geacht forum,


onderstaande macro verandert de cel kleur als daar een bepaalde waarde in staat.
Deze macro wordt opgestart bij het openen van de sheet.

Nu wil ik dat de aangegeven celkleuren ook veranderen op het moment dat er een waarde in de cel veranderd wordt.

Kunt u mij helpen?

mvg,

Aat



Code:
Sub CondFormatTracker()

Dim c, acc, cpe, pe, cimp, rfs As Range
Dim col_interior As Integer
Dim lastRow As Integer

lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

Set acc = Range("Q6", "S" & lastRow)
Set cpe = Range("T6", "V" & lastRow)
Set pe = Range("W6", "X" & lastRow)
Set cimp = Range("Y6", "AD" & lastRow)
Set rfs = Range("AE6", "AH" & lastRow)
 
    col_interior = 35
    For Each c In acc
        GoSub Colors
    Next c

    col_interior = 20
    For Each c In cpe
        GoSub Colors
    Next c
    
    col_interior = 28
    For Each c In pe
        GoSub Colors
    Next c
    
    col_interior = 37
    For Each c In cimp
        GoSub Colors
    Next c
    
    col_interior = 17
    For Each c In rfs
        GoSub Colors
    Next c

GoTo EndSub

Colors:
    If InStr(c.Value, "Delivered") Then
        c.Interior.ColorIndex = 4
        c.Font.ColorIndex = 1
    ElseIf InStr(c.Value, "Planned") Then
        c.Interior.ColorIndex = 23
        c.Font.ColorIndex = 1
    ElseIf InStr(c.Value, "Ordered") Then
        c.Interior.ColorIndex = 15
        c.Font.ColorIndex = 1
    ElseIf InStr(c.Value, "Failed") Then
        c.Interior.ColorIndex = 3
        c.Font.ColorIndex = 2
    ElseIf InStr(c.Value, "Attention") Then
        c.Interior.ColorIndex = 3
        c.Font.ColorIndex = 2
    Else
        c.Interior.ColorIndex = col_interior
        c.Font.ColorIndex = 1
    End If
    Return

EndSub:
End Sub
 
Hoi Abee,

alleerst is er een eenvoudigere manier om voorwaardelijk op te maken, maar je zal ongetwijfeld een goede reden hebben dat je dat niet gebruikt.

Om bij een wijziging een VBA Code uit te laten voeren ga je naar de VBA Editor, dubbelklik vervolgens linksbovenin op het werkblad waar je code uit wilt voeren. Er opent nu als het goed een pagina waar je VBA codes in kan voeren (of waar al VBA codes staan). Selecteer na in het linker drop-downmenu "Worksheet" en in de rechter "Change". Er wordt nu een nieuwe Sub aangemaakt die elke keer uitgevoerd wordt als er iets wordt gewijzigt op dat werkblad. Zat daar jouw code in.

Dan zou het moeten werken.

Succes, Cotje
 
Hoi Abee,

alleerst is er een eenvoudigere manier om voorwaardelijk op te maken, maar je zal ongetwijfeld een goede reden hebben dat je dat niet gebruikt.

Om bij een wijziging een VBA Code uit te laten voeren ga je naar de VBA Editor, dubbelklik vervolgens linksbovenin op het werkblad waar je code uit wilt voeren. Er opent nu als het goed een pagina waar je VBA codes in kan voeren (of waar al VBA codes staan). Selecteer na in het linker drop-downmenu "Worksheet" en in de rechter "Change". Er wordt nu een nieuwe Sub aangemaakt die elke keer uitgevoerd wordt als er iets wordt gewijzigt op dat werkblad. Zat daar jouw code in.

Dan zou het moeten werken.

Succes, Cotje


Je bedoelt dus dat ik mijn code in die workchange sub moet zetten?
 
Bij een Worksheet_Change werk je ook met het bereik Target, dat is het bereik dat net gewijzigd werd en op basis waarvan dat event in gang geschoten wordt.
 
Bij een Worksheet_Change werk je ook met het bereik Target, dat is het bereik dat net gewijzigd werd en op basis waarvan dat event in gang geschoten wordt.

Bedankt, het werkt bijna. Ik kom er nu wel uit.....
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan