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

Automatische Opvulkleur Maar Niet Via Voorwaardelijke Opmaak.....?!

Status
Niet open voor verdere reacties.

JOLLLEKE

Gebruiker
Lid geworden
31 jul 2004
Berichten
17
Hallo,

Via voorwaardelijke opmaak kan ik drie patroonkleuren toekennen aan een celwaarde. Ik heb wel eens gezien dat het mogelijk is om door de celwaarde via een validatielijst te selecteren hier meteen ook de opmaak aan was gekoppeld. En dat dit dus niet beperkt was tot de "drie" van de voorwaarde opmaak. Ik zie echter de kleuren die ik netjes in de lijst heb aangebracht niet terug als ik de code in de cel via het pijltje selecteer.

Kortom, ik heb een lijst van ongeveer twintig coderingen: AA, AB, DD, EF, GG, K2, H9 etc en ik wil dat ze meteen een verschillende opvulkeur krijgen als ik ze in een cel invoer.
Wie helpt mij? Alvast bedankt!

Jol
 
Pierre bedankt..

Pierre via de download van luc kom ik er gedeeltelijk wel aan uit. Het staat ook nog op zijn share. De eerste VBA optie is de beste voor mij. Dat is deze omschrijving van Luc

"De cel krijgt afhankelijk van het woord dat er in geplaatst wordt een andere kleur.
Dit enkel op het ogenblik dat deze cel gewijzigd wordt. Indien je alle kleuren zou wissen, dan komen de kleuren niet terug tenzij je het woord opnieuw typt.
Dit is meteen het nadeel van VBA voor voorwaardelijke opmaak. Ook indien het woord het resultaat is van een formule werkt deze methode niet."

Ik heb echter nog een vraag naar aanleiding van de waarschuwingen van Luc m.b.t. grootte en opslagtijd.
Kan ik dat VBA bestand ook los opslaan en koppelen via het openen van een macro als ik het bij een bestand nodig heb? Hoe doe ik dat dan want ik krijg hem niet aangeboden via extra-macro's? Hij zit echt vast aan het document.
Om de opslag en snelheid niet teveel te belemmeren zou ik het alleen willen koppelen bij een eenmalige bewerking van een document. Als de cellen gekleurd zijn zou de vba programmacode koppeling niet meer nodig zijn. Hoe werkt dat dan het beste?

Als ik een handmatig gekleurde cel kopieer of versleep naar een andere cel verdwijnt de kleur. Is daar wat aan te doen?

Alvast bedankt

Jolanda
 
Jolanda,

In dit geval met kopieren kun je de macro natuurlijk niet gebruiken.
Verder weet ik niet direct een antwoord, misschien iemand anders?

Pierre
 
Jolanda,

Open nieuw bestand en plak de 3 onderstaande codes in het VBA project.

In Module1:
Option Explicit
Sub Macro1()
Blad1.Select [A1:C10].Select
Selection.Interior.ColorIndex = xlNone
[A1].Select
End Sub

In ThisWorkbook:
Option Explicit
Public NoEvents As Boolean
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If NoEvents Then Exit Sub
Application.Run "Macro1"
ThisWorkbook.NoEvents = False
End Sub

In Blad1:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If [A1] = 1 Then Exit Sub
Dim x As Range
For Each x In ActiveSheet.[A1:C10]
With x
Select Case .Value
Case Is = "ROOD"
.Interior.ColorIndex = 3
Case Is = "GEEL"
.Interior.ColorIndex = 6
Case Is = "ZWART"
.Interior.ColorIndex = 1
Case Is = "BLAUW"
.Interior.ColorIndex = 5
Case Is = "GROEN"
.Interior.ColorIndex = 4
Case Is = "ORANJE"
.Interior.ColorIndex = 45
Case Else
.Interior.ColorIndex = xlNone
End Select
End With
Next
End Sub

De kleurencode is overigens ook van Luc Heyndrickx, met een kleine aanpassing.
Je eerste 'probleem' is met het gebruik van deze code opgelost denk ik. Ook cellen die het resultaat zijn van een andere cel worden gekleurd.

Zoals je in de Code van de Private Sub ziet heb ik het bereik beperkt tot een aantal cellen waarvoor de Private Sub actief is.
Als je in Cel A1 een ander getal dan 1 zet zijn de kleuren weer actief, bij 1 kun je rustig ergens ROOD invoeren / de Private Sub is uitgeschakeld.
Het tweede voordeel van de code is dat je maar 1 enkele cel (maakt niet uit welke) hoeft te bewerken om alle cellen (in het bereik) weer hun eigen kleur te geven.
De Code in ThisWorkbook stuurt Macro1() aan, die de kleuren van de cellen (alleen weer dat bereik) op NONE zet (ter beperking van de bestandsgrootte / opslagtijd).

Je kunt dus buiten het Bereik A1:C10 werken zonder dat de Private Sub je "helpt" of juist "dwarsboomt".
Het kan nog veel mooier met Bereiken etc., maar dat laat ik aan jou over.

Overigens neemt de VBA code sec maar zeer weinig ruimte in beslag, Het zijn alle kleuren die het bestand groter maken!
Succes.
 
bedankt Diezel

Ik ga het eens proberen. Alvast Bedankt,

Jolanda
 
Beste diezel

Het duurde even maar helaas...
Ik heb alles netjes keopieerd.
Als ik nu een cijfer 3 typ in cel a2 moet hij toch rood kleuren? Of moet ik zelf eers mijn codes op een andereplaats toevoegen en zo ja waar dan precies? kortom ik ben de weg kwijt.

Kun je me helpen?

Alvast bedankt,

Jol
 
Hoi Jolleke,

Probeer dit maar eens.
Kopieer dit in de VBA code van het werkblad waar het om gaat.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A5:A25")) Is Nothing Then
Inkleuren01
End If
End Sub

Kopieer dit naar een module;

Sub Inkleuren01()
For Each Cell In Range("A5:A25")
If Cell.Value = ("AA") Then
With Cell.Interior
.ColorIndex = 3
End With
End If
Next

For Each Cell In Range("A5:A25")
If Cell.Value = ("BB") Then
With Cell.Interior
.ColorIndex = 5
End With
End If
Next

For Each Cell In Range("A5:A25")
If Cell.Value = ("") Then
With Cell.Interior
.ColorIndex = 0
End With
End If
Next
End Sub

Het For Each t/m Next stukje kun je net zo vaak kopieren als je codes nodig hebt, wel in dezelfde module blijven! Ik heb er 2 gemaakt als voorbeeld, de derde wist de kleuren in een lege cel.
Je moet wel in het eerste en tweede stuk code de Range aanpassen waarin jij jouw codes in je werkblad wilt plaatsen.
Ook moet je de Colorindex aanpassen aan welke kleuren je bij een code wilt hebben.
Verander je in het werkblad de codes dan kleuren deze vanzelf mee.
Wis je een code dan zorgt het laatste stukje For Each t/m Next ervoor dat de kleur ook verdwijnt.

Even iets anders, ik denk niet dat je het in Excel gaat redden met 20 kleuren, er zijn er eigenlijk maar een stuk of 8 à 9 goed zichtbaar op scherm, de rest lijkt heel veel op elkaar.

Veel succes :D
 
Laatst bewerkt:
Hoi Jolanda,

Als je goed naar de code kijkt dan wordt cel A2 alleen rood als je het woord ROOD intypt. Het cijfer 3 is de kleurcode.
Bijgaand het bestand in zip formaat.
Succes
 

Bijlagen

HIJ DOET HET! BEDANKT

Beste Diezel,

Na het openen kreeg ik geen enkele kleur te zien maar nadat ik het rijkte aanvulde met "rood"kleurde ineens alles wel?! Erg bedankt ik kan hiermee heel goed uit de voeten. Het in en uitschakelen in cel A1 en verplaatsen gaat ook prima.

Thankx

Jol
 
Graag gedaan.

PS: en het leukste is dat ik hier ook weer wat van heb geleerd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan