Cell kleur aanpassen aan de hand van Value

Status
Niet open voor verdere reacties.

Royzilla

Gebruiker
Lid geworden
10 apr 2014
Berichten
187
Ik heb een klein vraagje waar ik zelf echt niet mee uitkom.

Als er in de kolom A1 staat Goed, Fout, of Niet ingevuld wil ik dat de kleur van de cell wordt aangepast naar Groen, Rood of Geel. Maar dit werkt helaas niet zoals ik wil.
Ik wil dus graag dat in de range van A1 tot A100 gekeken wordt naar de values. Als ik Rang("A1:A100") doe werkt het niet helemaal en in kom er gewoon echt niet uit.
Kan iemand me hier meehelpen?
Code:
If Range("A1").Value = "Goed!" Then
        Range("A1").Interior.Color = RGB(0, 255, 0)
    ElseIf Range("A1").Value = "Fout!" Then
        Range("A1").Interior.Color = RGB(255, 0, 0)
    ElseIf Range("A1").Value = "Niets ingevuld!" Then
        Range("A1").Interior.Color = RGB(255, 255, 0)
    End If
Thanks! :D
 
Bedankt voor je reactie, maar daar snap ik helaas vrij weinig van. Ik heb het gelezen proberen toe te passen, maar het lukt niet. Sorry.
 
Leg eens uit wat je wilt, want helemaal snappen doe ik het niet. Je code laat een kleur zien voor Cel A1, maar je praat over een Range (A1-A100). Wanneer moet A1 nu veranderen? Of moeten alle cellen in de range veranderen? Zo ja: waarom gebruik je dan niet Voorwaardelijke Opmaak? Gebruik eerst de programma-eigen oplossingen, voordat je naar VBA grijpt :)
 
Hee Octafish dankjewel voor je reactie.

Ik wil het proberen met de VBA code. Wat ik precies wil is dat als er bijvoorbeeld 'Goed' in de range van (A1:A100) staat. Dat dit vak groen wordt. Bij 'Fout' zou ik het rood willen en bij 'Niets ingevuld' Geel.

Ik zou het het liefst gewoon met VBA code willen, zodat ik hier op verder kan borduren. Alleen het lukt me niet.
 
in A1:A100 kan 99 keer 'Goed' staan.

Kijk voor de lol ook eens naar:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then Target.Interior.Color = RGB(IIf(InStr("Fout!Niets ingevuld!", Target), 255, 0), IIf(InStr("Goed!Niets ingevuld!", Target), 255, 0), 0)
End Sub

De resultaten van een formule activeren geen werkbladgebeurtenis.
 
Laatst bewerkt:
Heey snb het klopt dat er idd 99 keer goed kan staan. Maar als ik dit toepas komt er geen kleur in een cel.
Zou je me misschien ook dat stukje code kunnen uitleggen? want dat heb ik namelijk nog nooit gezien met Target en Address :p

bedankt :)
 
Probeer eerst eens duidelijk te maken aan ons wat je juist wil bereiken.
Wil je gewoon een volledige range controleren en de kleur wijzigen of wil je dat wanneer je iets invult in een bepaalde range de kleur onmiddellijk wijzigt ?
Worden de resultaten handmatig ingevuld of wordt dit bekomen door een formule ?
Plaats anders eens een voorbeeldbestandje met wat je nu hebt.
 
Ik gaf een voorbeeld over de kolom van A om daar de kleur te wijzigen aan de hand van de value. In mijn code zelf gaat het om kolom H in de range van H3:H100.

Er wordt gegeken of het goede antwoord ingevuld wordt in Kolom E. (in kolom A tot D wordt een som weergegeven).
In Kolom G staat het antwoord van de som maar dit kan je niet zien. (opmaak op ;;;)
Als er nog niks ingevuld is, staat heel kolom H in de range van H3:H100 op Niets ingevuld!(Hiervan wil ik de cel Geel hebben) En als het antwoord goed is van de Som, komt er te staan: Goed. (Hiervan wil ik de cel groen hebben). Als het antwoord Fout is wil ik dat de cell in kolom H veranderd in Fout.

Ik zal mijn bestandje opsturen.

Bekijk bijlage Book1.xls
 

Bijlagen

Zelf heb ik het nu wel zover gekregen met de voorwaardelijke opmaak.
Maar ik zou graag willen weten hoe het dan mogelijk zou zijn met een stukje code.
 
Je hebt er 2 nodig
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target = vbNullString Then Target.Offset(, 3).Interior.Color = RGB(255, 255, 0): Exit Sub
    If Not Intersect(Target, Range("E3:E100")) Is Nothing Then
        Target.Offset(, 3).Interior.Color = RGB(IIf(InStr("Fout!", Target.Offset(, 3)), 255, 0), IIf(InStr("Goed!", Target.Offset(, 3)), 255, 0), 0)
    End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E3:E100")) Is Nothing Then
        If Target = vbNullString Then Target.Offset(, 3).Interior.Color = RGB(255, 255, 0)
    End If
End Sub
 
Dit is echt briljant! Hier ben ik echt blij mee :D:D

Zou je me wat uitleg kunnen geven bij de code? Zodat ik dit onder de knie krijg ^___^

Heel erg bedankt!
 
Deze kon nog iets korter (zoals snb al aangaf)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E3:E100")) Is Nothing Then
        Target.Offset(, 3).Interior.Color = RGB(IIf(InStr("Fout!Niets ingevuld!", Target.Offset(, 3)), 255, 0), IIf(InStr("Goed!Niets ingevuld!", Target.Offset(, 3)), 255, 0), 0)
    End If
End Sub

Voor uitleg zet je de cursor op een woord dat je niet kent en druk op F1.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan