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

waarde toekennen aan een gekleurde cel

Status
Niet open voor verdere reacties.

HenkBakker

Gebruiker
Lid geworden
9 nov 2006
Berichten
164
Hoe kun je aan een gekleurde cel (bv rood); zonder inhoud, een waarde toekennen?
Bijvoorbeeld:
ik heb cel A1 mbv opmaak rood gekleurd
nu wil ik cel B1 de waarde 1 weergeven, als A1 rood is; als A1 ongekleurd (wit) is, dan moet het waarde 0 weergeven.

Bestaat hier een bepaalde functie voor?
 
Dat kan wel met een zelf gemaakte functie maar of het nou zo handig is vraag ik me af:
Code:
Function BijRood(Target As Range, Waarde As Variant) As Variant
    Application.Volatile
    BijRood = vbNullString
    If Target.Interior.Color = 255 Then
        BijRood = Waarde
    End If
End Function

Aanroep:
=BijRood(Gekleurde cel; Waarde)

Ik zou voor de functionaliteit die je zoekt toch iets anders verzinnen.
 
reactie edmoor

Beste edmoor,

Bedankt! Dit is de oplossing voor mijn 'probleem'!
Maar...
Kan de functie worden uitgebreid of wellicht is het mogelijk een nieuwe functie te creëren?

In plaats van dat de kleur alleen rood kan zijn, kan deze ook een andere kleur hebben. Bijvoorbeeld blauw (RGB 0;112;192). Is het mogelijk om iedere RGB (dus dat elke waarde voor R,G en B mogelijk is) in de functie te betrekken?

Als niet mogelijk, is het dan wel mogelijk om bovenstaande functie te wijzigen in 'niet wit' (in plaats van rood)?
 
Afhankelijk van wat je precies wilt is dat allemaal mogelijk.
 
Je kan het toch ook met voorwaardelijke opmaak doen.
in A1 een 1 en in VO: als A1>0 dan tekst en invulling rood en dan in B1: Als(a1>0;1;0)
 
Ik heb een sheet (vakantieplanner; voor iedereen toegankelijk), waarin een aantal collega's met behulp van verschillende kleuren (verder niets; dus geen waarden) aan kunnen geven, of iemand een (halve) ADV, een (halve) vrije dag, willen inplannen. Ook wordt de cel van de dag een kleur gegeven, als hij/zij ziek is. Feestdagen hebben een eigen kleur. Enzovoort.

In een andere sheet (weekoverzicht; alleen voor mij toegankelijk) geef ik getalsmatig aan of iemand de gehele dag aanwezig is of niet. Volledig aanwezig = 1; volledig afwezig = 0. Ook 0,25 (¾ vrije dag), 0,5 (½ vrije dag) en 0,75 (¼ vrije dag) is mogelijk. Aan de hand van deze waarden heb ik met Voorwaardelijke Opmaak weer degradaties van kleuren gemaakt, zodat in één oogopslag zichtbaar is als iemand (gedeeltelijk; en voor welk gedeelte) afwezig is.

Op dit moment moet ik altijd in de ene sheet kijken, of iemand (gedeeltelijk) vrij is (heeft genomen); en dit overnemen (en omzetten in een getalswaarde) in de andere sheet. Dit wil ik met behulp van links automatisch maken.
Beide sheets moeten blijven bestaan.
 
Als je in Excel een lijstje hebt met kleuren en bijbehorende waarden dan wil ik er wel even naar kijken.
 
kleuren + codes

zie bijlage
 

Bijlagen

  • kleuren+codes vakantie - weekoverzicht.xlsx
    10,6 KB · Weergaven: 113
Hoi Henk,

Deze code gebruik ik (gevonden op www):
Code:
Function Color(rng As Range, Optional formatType As Integer = 0) As Variant
    Dim colorVal As Variant
    colorVal = Cells(rng.Row, rng.Column).Interior.Color
    Select Case formatType
        Case 1
            Color = Hex(colorVal)
        Case 2
            Color = (colorVal Mod 256) & ", " & ((colorVal \ 256) Mod 256) & ", " & (colorVal \ 65536)
        Case 3
            Color = Cells(rng.Row, rng.Column).Interior.ColorIndex
        Case Else
            Color = colorVal
    End Select
End Function

Aanroep (voor RGB):
=Color(Gekleurde cel; 2)
 
IK heb je voorbeeld document uitgebreid met een nieuw blad. Kijk daar eens:
Bekijk bijlage kleuren+codes vakantie - weekoverzicht.xlsm

Gebruikte code:
Code:
Function KLEUR_ZOEKEN(Zoek As Range, Bereik As Range, Kolom As Integer) As Variant
    Dim i As Long
    With Sheets(Bereik.Parent.Name)
        For i = Bereik.Row To Bereik.Rows.Count
            If .Cells(i, Bereik.Column).Interior.Color = Zoek.Interior.Color Then
                KLEUR_ZOEKEN = .Cells(i, Bereik.Column + Kolom)
                Exit For
            End If
        Next i
    End With
    If KLEUR_ZOEKEN = "" Then KLEUR_ZOEKEN = "" [COLOR="#008000"]'Anders geeft 'ie 0 terug[/COLOR]
End Function

Aanroep in C1:
=KLEUR_ZOEKEN(A1;'vakantie - weekoverzicht'!$K$2:$K$24;2)

Werking:
Zoek de kleur van A1 in het opgegeven bereik en geef wanneer gevonden de waarde terug die 2 kolommen verderop staat.
 
Laatst bewerkt:
Je zal als medewerker maar kleurenblind zijn......

Gegevensvalidatie eventueel in combinatie met VO lijkt mij en sneller qua invoer en betrouwbaarder. Maar dit staat eigenlijk al in #2:d
 
reactie edmoor

Nog steeds ben ik je erg dankbaar voor het gedane werk!
Helaas, heb ik de functie niet goed toegepast, of er zit een fout in...

Misschien is het handiger als ik genoemde sheets toevoeg. Uiteraard moet ik rekening houden met persoonsgegevens, dus noem ik de werknemers 1 t/m 4.

Een korte uitleg:
in de jaarplanning kan iedere werknemer zijn eigen afwezigheid door middel van de getoonde kleuren ingeven.
In daily report worden deze kleuren overgenomen in kolommen G t/m J (let op andere volgorde). Er is tussen beide sheets wel transposing nodig. En er moet elke maand een lege regel tussengevoegd worden, vanwege de maandtotalen.
Dat laatste (transposing + extra lege regels) kan ik zelf wel.
Het gaat me alleen om de 'vertaling' van de kleuren(waardes) uit de jaarplanning naar het daily report.
 

Bijlagen

  • daily report.xlsx
    794,4 KB · Weergaven: 74
  • jaarplanning 2017.xlsx
    96,2 KB · Weergaven: 74
De functie doet het prima in het document dat je als voorbeeld had geplaatst. Ik zal later eens kijken naar je documenten in #12.
Let wel: Een functie wordt niet uitgevoerd door alleen een kleur te wijzigen.
 
reactie op edmoor

Na een tijdje heb ik nog eens naar je oplossing gekeken.
Helaas, ik kom er niet uit...
Ik begrijp wel wat je functie doet.

Ik denk dat ik niet goed heb uitgelegd wat ik wil.
Als een cel in de 'vakantieplanning 2017' een bepaalde kleur (rood, groen, roze, blauw enz.) heeft, moet in het 'daily report' de bijhorende waarde; in corresponderende cel (met dezelfde datum) een waarde worden weergegeven (met behulp van een functie).

Om uit te leggen om welke kleuren het gaat heb ik ze uitgedrukt in RGB-waarden. De 'vertaling' van deze kleuren naar waarden kan 0, 0.25, 0.5, 0.75 of 1 zijn.
Dit heb ik proberen weer te geven in 'kleuren+codes vakantie - weekóverzicht'. Een soort legenda dus; geen onderdeel van één van de sheets; zelfs geen bestaande sheet...


Een voorbeeld: in de jaarplanning heeft iemand aangegeven een ADV te nemen op 5 mei. Daartoe kleurt hij/zij de corresponderende cel donkergeel (RGB: 247 150 70).
Nu is het de bedoeling dat er in het weekoverzicht (daily report); een andere sheet dus; de waarde 0 (hetgeen betekent dat er 0% van die dag wordt gewerkt) in de cel van deze persoon bij 5 mei komt te staan. Door de al aangebrachte voorwaardelijke opmaak, zal deze (een een aantal andere cellen) rood gaan kleuren (vanwege de waarde 0).

Op dit moment moet ik elke dag in de vakantieplanner kijken of iemand (gedeeltelijk) afwezig is en vervolgens handmatig een waarde in het weekoverzicht zetten. Het doel van de (te maken) functie is, dat ik zelf niets hoef te doen, maar dat wel direct zichtbaar wordt (evt. door gegevens bij te werken) wie er vandaag (gedeeltelijk) vrij is en wie niet.

Ik had verwacht, dat je de functie "bijRood" zou gaan uitbreiden met "bijGeel"; "bijBlauw" enz.
Dit lukt mijzelf echter niet, omdat niet begrijp hoe het in zijn werk gaat. In "bijRood" zie ik een waarde 255 (die overeenkomt met de 'roodwaarde' in RGB (255 0 0). Alleen 255 zou niet genoeg zijn, omdat de kleuren roze (RGB 255 150 150) en lichtroze (RGB 255 200 200) deze waarde ook bevat.
Als deze waarde bv 255000000 zou zijn (drie digits per R,G en B), zou ik deze kunnen vervangen in "bijRoze" door 255150150...
 
Het lijkt mij voor medewerkers simpeler een letter of cijfer in een cel te zetten dan een kleur.

Als je het fraaier wil maken zet je iconen in het lint voor ziekte, vakantie, cursus waarop maar geklikt hoeft te worden om de aktieve cel van gegeven/kleur te laten verschieten.
 
Laatst bewerkt:
Het lijkt mij voor medewerkers simpeler een letter of cijfer in een cel te zetten dan een kleur.

Als je het fraaier wil maken zet je iconen in het lint voor ziekte, vakantie, cursus waarop maar geklikt hoeft te worden om de aktieve cel van gegeven/kleur te laten verschieten.

Klopt! Maar hoe???
 
Henk, je schrijft o.a.:

Een voorbeeld: in de jaarplanning heeft iemand aangegeven een ADV te nemen op 5 mei. Daartoe kleurt hij/zij de corresponderende cel donkergeel (RGB: 247 150 70).

Is het niet handiger om in plaats van een cel een kleur te laten geven een letter of cijfer te laten invullen?
M.b.v. voorwaardelijke opmaak kun je dan de bijbehorende kleur laten geven en, wellicht nog belangrijker, in de overige bladen hoef je niet te reageren op de kleur van een cel, maar kun je de opgegeven letter/cijfer gebruiken.
 
voorzet codering

Henk, je zou bijv. dit als uitgangspunt kunnen nemen
 

Bijlagen

  • kleuren+codes vakantie - weekoverzicht hs.xlsx
    10,8 KB · Weergaven: 95
Henk, je schrijft o.a.:



Is het niet handiger om in plaats van een cel een kleur te laten geven een letter of cijfer te laten invullen?
M.b.v. voorwaardelijke opmaak kun je dan de bijbehorende kleur laten geven en, wellicht nog belangrijker, in de overige bladen hoef je niet te reageren op de kleur van een cel, maar kun je de opgegeven letter/cijfer gebruiken.

Inderdaad, dit is eenvoudiger! En, belangrijker, ik kan het zonder hulp doen.
Maarrrr... het probleem is, dat ik mijn collega's moet heropvoeden...
 
bijv. (aktiveer het laatste tabblad in het lint).
 

Bijlagen

  • __personeelplanning snb.xlsb
    14,7 KB · Weergaven: 101
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan