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

Conditional Formatting >> 6 criteria's

Status
Niet open voor verdere reacties.

Jhon van der Bo

Gebruiker
Lid geworden
13 sep 2002
Berichten
295
Bij "Format" / "Conditional Formatting" kan ik maximaal 3 criteria's invoeren per cel en dan kleurt de cel. Ik kan dus maximaal 3 verschillende kleuren krijgen.
Nu heb ik 6 verschillende criteria's en deze criteria's moeten allen een eigen kleur krijgen BV:
ZW = rood, UITL = groen, TRA = blauw, deze drie is geen probleem maar dan de volgende drie, EOL = paars, LOG = geel, VAK = grijs.
Is er een manier om al deze 6 criteria's in te voeren?
 
Onderstaande code heb ik hier gevonden (en iets aangepast) maar werkt alleen op cijfers én over de hele sheet

'***********************************
Private Sub Worksheet_Change(ByVal Target As Range)
With Target.Interior
Select Case Target.Value

Case 1
.ColorIndex = 6
.Pattern = xlSolid

Case 2
.ColorIndex = 7
.Pattern = xlSolid

Case 3
.ColorIndex = 8
.Pattern = xlSolid

Case 4
.ColorIndex = 9
.Pattern = xlSolid

Case 5
.ColorIndex = 10
.Pattern = xlSolid

Case 6
.ColorIndex = 11
.Pattern = xlSolid


Case Else
.ColorIndex = 0
.Pattern = xlSolid

End Select
End With
End Sub
'***********************************
Werkt in principe goed maar als ik 2 of meer cellen selekteer (waar een waarde in staat) en druk dan op delete dan verschijnt er een foutmelding
>>Run-time Error '13': Type Mismatsh<<
Ik wil mijn criteria vaststellen met cijfers én letters en niet over de hele sheet maar over een bepaald bereik van de sheet (bv A1:H10).
 
Het gebruik van select case is niet beslist nodig voor jouw probleem, maar als je dat toch wil gebruiken: in de helpfile van Excel wordt dat prima uitgelegd. Het lijkt me niet zo verstandig om zo maar van elders iets over te nemen zonder de werking te begrijpen.
Een andere kwestie is of het gebruik van de methode worksheet_change voor jouw probleem is aangewezen. Moeten de cellen altijd meteen van kleur veranderen als de inhoud wijzigt, of wil je zelf de opdracht voor uitvoering van de macro geven?
Dat je een foutmelding krijgt bij wissen van de inhoud van de cellen is logisch. De inhoud voldoet dan immers niet meer aan een van de criteria.
 
Het gebruik van select case is niet beslist nodig voor jouw probleem, maar als je dat toch wil gebruiken: in de helpfile van Excel wordt dat prima uitgelegd. Het lijkt me niet zo verstandig om zo maar van elders iets over te nemen zonder de werking te begrijpen.
Ik had ergens op internet iets gevonden waarvan ik dacht dat dit mijn probleem oploste met misschien een kleine aanpassing. Ja, je hebt gelijk, ik moet niet zomaar iets gebruiken waarvan ik de werking niet begrijp. Ik begrijp het dan ook niet helemaal, ik probeer het gewoon uit en verander iets en kijk dan wat er gebeurt.
Moeten de cellen altijd meteen van kleur veranderen als de inhoud wijzigt, of wil je zelf de opdracht voor uitvoering van de macro geven
De cel kan van kleur veranderen als de inhoud wijzigt of pas nadat de cel niet meer actief is, maakt eigenlijk niets uit, als de cel maar van kleur verandert.
Dat je een foutmelding krijgt bij wissen van de inhoud van de cellen is logisch. De inhoud voldoet dan immers niet meer aan een van de criteria
Ja, correct, klopt.
Ik ben niet zo'n held in het schrijven van macro's. Ik gebruik meestal de macrorecorder. Het meeste van de VB code's die ik heb, heb ik van het internet. Deze bewaar ik voor het geval ik het evt. eens nodig heb, met een kleine aanpassing. Gaat meestal wel goed.
 
Ok, even zelf snel een macrootje gemaakt om te laten zien dat het ook gewoon met if-then kan. Deze moet je wel zelf runnen (en in een een gewone module plaatsen). Kijk maar of je er iets aan hebt.

Sub test()
Dim c As Range, myrng As Range
Set myrng = Range("A1:H10")
For Each c In myrng
If c.Value = "ZW" Then
c.Interior.Color = vbRed
ElseIf c.Value = "UITL" Then
c.Interior.Color = vbGreen
ElseIf c.Value = "TRA" Then
c.Interior.Color = vbBlue
ElseIf c.Value = "VAK" Then
c.Interior.ColorIndex = 15
ElseIf c.Value = "EOL" Then
c.Interior.Color = vbMagenta
ElseIf c.Value = "LOG" Then
c.Interior.Color = vbYellow
Else
c.Interior.ColorIndex = none
End If
Next c
End Sub
 
'T WERKT,
Ik heb een knopje op de sheet geplaatst en na het invullen van het lijstje klikt men hierop, alles wordt nu netjes ingekleurd. Als ik een waarde uit de cel verwijder blijft de cel nog gekleurd, klik op het knopje en de kleur is weg.
Dit is perfect zo, net wat ik nodig heb.
Deze code bewaar ik nu dus ook en als het nodig is kan ik makkelijk zelf criteria's toevoegen of koppelen aan een andere macro.
Fra, knap gedaan. Het is te merken dat je wel degelijk weet waar je over praat.

Bedankt voor je hulp.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan