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

Vraag omtrent voorwaardelijke opmaak

Status
Niet open voor verdere reacties.

Falcon86

Gebruiker
Lid geworden
23 jul 2010
Berichten
9
Met voorwaardelijke opmaak kun je maximaal 3 opmaken instellen. Is er een manier om dit te omzeilen?

Wat ik namelijk wil is het volgende:
Ik heb vijf categorieën met elk een eigen kleur (1 = groen, 2 = geel, 3 = oranje, 4 = rood, 5 = donker rood). Wat ik wil is dat als ik in kolom G (in mijn geval) een getal invul (1 t/m 5), de kolom de bijbehorende kleur overneemt. Dit is mij gelukt voor de eerste drie getallen, maar als ik getal 4 en 5 wil toevoegen in de voorwaardelijke opmaak, kan dit niet. Ik kan namelijk maar drie voorwaardelijke opmaken toevoegen.

Is er een bepaalde manier, eventueel buiten voorwaardelijke opmaak om, om dit probleem op te lossen?

Hopende op jullie antwoord!

Groet Rogier
 
VBA :

Code:
Sub Kleurtjes()
Dim c As Range, myrng As Range
Set myrng = Range("g1:G20")
For Each c In myrng
If c.Value = Range("M1") Then
c.Interior.Color = vbGreen
ElseIf c.Value = Range("M2") Then
c.Interior.Color = vbYellow
ElseIf c.Value = Range("M3") Then
c.Interior.Color = vbBlue
ElseIf c.Value = Range("M4") Then
c.Interior.Color = vbRed
ElseIf c.Value = Range("M5") Then
c.Interior.Color = vbMagenta
Else
c.Interior.ColorIndex = none
End If
Next c
End Sub

In Range M1-M5 plaats je de cijfers 1 tot 5
 
Laatst bewerkt:
Bedankt voor je reactie!

Zou je het misschien iets concreter kunnen uitleggen wat ik nu precies moet doen?
 
Bedankt voor je reactie!

Zou je het misschien iets concreter kunnen uitleggen wat ik nu precies moet doen?

Klik met je rechtermuisknop op de tabbladnaam en selecteer Programmeercode weergeven.
Plaats de code in het rechterveld.
De code kan overigens wat korter, maar wat belangrijker is wat je het prettigst vindt om te gebruiken:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G1:G20")) Is Nothing And Target > 0 And Target <= 5 Then
    Target.Interior.Color = WorksheetFunction.Choose(Target.Value, vbGreen, vbYellow, vbBlue, vbRed, vbMagenta)
End If

End Sub

Met vriendelijke groet,



Roncancio
 
Laatst bewerkt:
Bedankt! Nu is het bíjna gelukt! Alleen zou ik graag de kleuren die jullie hebben genoemd willen veranderen. Ik heb het geprobeerd door onderstaande code:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G5:G65")) Is Nothing And Target > 0 And Target <= 5 Then
    Target.Interior.Color = WorksheetFunction.Choose(Target.Value, vbGreen, vbLightGreen, vbLightYellow, vbLightOrange, vbRed)
End If

End Sub


Helaas lukt dat niet. In zoverre dat de getallen 2 t/m 4 (LightGreen, LightYellow, Light Orange) nu zwart worden. Ik denk dat ik voor die kleuren dus de verkeerde code heb. Iemand een idee welke code bij de Light-kleuren hoort?

Groet Rogier
 
Laatst bewerkt door een moderator:
Hi Rogier,

Zo ongeveer,

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("G5:G65")) Is Nothing And Target > 0 And Target <= 5 Then
        Target.Interior.Color = WorksheetFunction.Choose(Target.Value, vbGreen, 5296274, 6750207, 5677048, vbRed)
    End If
End Sub

Joske
 
Hi Rogier,

Zo ongeveer,

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("G5:G65")) Is Nothing And Target > 0 And Target <= 5 Then
        Target.Interior.Color = WorksheetFunction.Choose(Target.Value, vbGreen, 5296274, 6750207, 5677048, vbRed)
    End If
End Sub

Joske

Hallo Joske,

ik was ook op zoek naar een dergelijke oplossing.
ik heb jouw eerste code geprobeerd maar die doet het niet, ook deze met de light kleuren doet het niet, die van roncancio werkt perfect. maar ik wil ipv nummer 1 t/m 5 namen gebruiken, daarom had ik die van jouw willen gebruiken dan kan ik gewoon in M1-M5, namen kunnen invullen ipv de cijfers, hoopte ik tenminste ik weet niet of het zo werkt???

maar misschien heb jij of roncancio wel een oplossing voor mij.

bvd

jack
 
Hallo Joske,

ik was ook op zoek naar een dergelijke oplossing.
ik heb jouw eerste code geprobeerd maar die doet het niet, ook deze met de light kleuren doet het niet, die van roncancio werkt perfect. maar ik wil ipv nummer 1 t/m 5 namen gebruiken, daarom had ik die van jouw willen gebruiken dan kan ik gewoon in M1-M5, namen kunnen invullen ipv de cijfers, hoopte ik tenminste ik weet niet of het zo werkt???

maar misschien heb jij of roncancio wel een oplossing voor mij.

bvd

jack

Interior.Color heeft een beperkt aantal mogelijkheden, vandaar dat light... niet werkt.
Het is dan beter om gebruik te maken van Interior.ColorIndex omdat je dan veel meer keuzemogelijkheden heeft.
Verder zou je inderdaad kunnen werken met namen waarbij VBA zoekt naar de naam in een bepaald bereik en bijvoorbeeld de achtergrondkleur van de gevonden cel gebruikt om de andere cel te kleuren.

Met vriendelijke groet,


Roncancio
 
Interior.Color heeft een beperkt aantal mogelijkheden, vandaar dat light... niet werkt.
Het is dan beter om gebruik te maken van Interior.ColorIndex omdat je dan veel meer keuzemogelijkheden heeft.
Verder zou je inderdaad kunnen werken met namen waarbij VBA zoekt naar de naam in een bepaald bereik en bijvoorbeeld de achtergrondkleur van de gevonden cel gebruikt om de andere cel te kleuren.

Met vriendelijke groet,


Roncancio

Hallo Roncancio,

dank voor je reactie, ik dacht daarbij inderdaad aan de eerste oplossing hier gegeven waarbij ik dan de cijfers 1 t/m 5 vervang door namen, heb ik ook gedaan maar dat werkt niet. ik ben niet thuis in VBA, heb jij misschien een oplossing voor mij???

bvd

jack
 
Hallo Roncancio,

dank voor je reactie, ik dacht daarbij inderdaad aan de eerste oplossing hier gegeven waarbij ik dan de cijfers 1 t/m 5 vervang door namen, heb ik ook gedaan maar dat werkt niet. ik ben niet thuis in VBA, heb jij misschien een oplossing voor mij???

bvd

jack

In bijgevoegd bestand zit in cel G2 (omrande cel) een datavalidatie.
Als je een keuze maakt uit de lijst, wordt cel G2 gekleurd met dezelfde kleur als de cel in de lijst.

Met vriendelijke groet,


Roncancio
 

Bijlagen

Laatst bewerkt:
In bijgevoegd bestand zit in cel G2 (omrande cel) een datavalidatie.
Als je een keuze maakt uit de lijst, wordt cel G2 gekleurd met dezelfde kleur als de cel in de lijst.

Met vriendelijke groet,


Roncancio

Hallo Roncancio,

helemaal top, bedankt

groeten

jack
 
Is er een overzicht van die kleurencodes?

De kleuren zijn nét niet de kleuren die ik zoek namelijk! Heb al even gegoogled maar kan zo 1,2,3 niet wat vinden!
 
Ik heb het bestand aangepast met je door jou gewenste kleuren.

Met vriendelijke groet,


Roncancio
 

Bijlagen

Onder het motto Iets vragen wat je niet weet, is je even schamen.
Iets niet vragen, zodat je het antwoord nooit weet, is je voor altijd schamen.
gaan we nog even door met vragen stellen! :)

Ik gebruik nu dus de code:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G5:G65")) Is Nothing And Target > 0 And Target <= 5 Then
Target.Interior.Color = WorksheetFunction.Choose(Target.Value, vbGreen, 5296274, 6750207, 5677048, vbRed)
End If
End Sub


en ik neem aan dat ik de code van Roncancio bij moet zetten die in het Excel-bestand staat??

rivate Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("G1:G20")) Is Nothing And Target <> "" Then
KL = WorksheetFunction.Match(Target, Range("Kleuren"), 0)
Target.Interior.ColorIndex = Range("A" & KL).Interior.ColorIndex
ElseIf Not Intersect(Target, Range("G1:G20")) Is Nothing Then
Target.Interior.ColorIndex = xlNone

End If

End Sub




Hoe moet ik daar nu dan die code van jouw bij zetten?
 
Het is beter om codetags te gebruiken als je hier code plaatst...

In mijn code ging ik uit van mijn bestand.
Ik heb je code aangepast dus vervang je code door onderstaande:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G5:G65")) Is Nothing And Target > 0 And Target <= 5 Then
    Target.Interior.ColorIndex = WorksheetFunction.Choose(Target.Value, 4, 35, 36, 45, 3)
End If
End Sub

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan