Avatar billede aitnemed Novice
21. juli 2010 - 09:15 Der er 4 kommentarer og
1 løsning

Excel: Cellers baggrundsfarvekode i RGB-format?

Hej hej

Jeg har nogle celler i mit excel regneark, hvis baggrundsfarve programmatisk bliver sat til en bestemt farve, når bestemte kriterier bliver opfyldt.

Farverne ændrer sig dynamisk, så jeg kender dem ikke på forhånd.

Jeg er i gang med at prøve at lave en timerfunktion, så farverne langsomt fader tilbage til hvid, MEN nu er jeg stødt på et problem:

Jeg har brug for at vide, hvilken farveværdi de farvede celler har, men jeg har brug for RGB-værdien og ikke colorindex-værdien for at fade-effekten fungerer.

Hvordan kan jeg finde ud af, hvilken RGB-værdi der gælder for en celles baggrundsfarve?
Avatar billede store-morten Ekspert
21. juli 2010 - 10:25 #1
Avatar billede store-morten Ekspert
21. juli 2010 - 10:36 #2
Avatar billede store-morten Ekspert
21. juli 2010 - 10:41 #3
Øverst: Online
Nederst: Program, lås dig fast et sted, f.eks en celle, peg på en farve og aflæs RGB.
Avatar billede aitnemed Novice
21. juli 2010 - 13:22 #4
Tak for forslaget - det gør ganske rigtigt det jeg efterspurgte, men jeg kan se, at jeg manglede at tydeliggøre, at det skal ske i VBA koden... altså uden at jeg manuelt skal ind og aflæse hver gang.

I koden kender jeg de celler, som får en anden farve (sættes pt. via colorindex), men den baggrundsfarve de får, afhænger af den aktuelle iteration.

Lidt baggrundsinfo:

Til et specialudviklet regneark har jeg lavet en funktion i VBA, som tjekker efter ord, der er identiske.

Hvis der i celle A1 findes ord X som er identisk med ord Y i f.eks. celle K8, så vil mit program via en dialogboks fortælle brugeren, at ordene i celle A1 og K8 er identiske.

Dette sker via en iteration af data i et bestemt celleområde.

---------------------Ovenstående er lavet og fungerer---------------------

Mit ønske er så, at for at brugeren kan se hvilke celler, der har ens ord, så skal disse cellers baggrundsfarve matche, men stadig være forskellig for evt. fundne ord i næste iteration (som nu har bevæget sig videre og derfor tager udgangspunkt i A2 og påny sammenligner ordet heri med cellerne i det afgrænsede område).

Dette har jeg også implementeret dog indtil videre kun sådan, så alle celler med matchende ord (uanset iteration) får baggrundsfarven rød.

Hagen ved et sådan farveskift er, at man selv efterfølgende skal ind og manuelt sætte baggrundsfarven tilbage til hvid.
Derfor er jeg igang med at implementere en timerfunktion, der over 5-10 sekunder fader den pågældende baggrundsfarve tilbage til hvid. Fade-effekten kræver at jeg i koden kan få adgang til RGB-værdien af baggrundsfarven.
Avatar billede aitnemed Novice
21. juli 2010 - 20:15 #5
Nå, nu har jeg fundet en løsning med hjælp fra gutterne hos Ozgrid: http://www.ozgrid.com/forum/showthread.php?t=144541&s=0cae5cbab75428c336897ddaf9873aff&p=514673#post514673

Jeg har oprettet funktionen SingleColorFromRGB, som returnerer den røde, blå eller grønne farvekode ud fra den værdi, der returneres af range.interior.color.


Function SingleColorFromRGB(colorWanted As String, RGBValue As Long) As Long
    Dim rColor As Long, gColor As Long, bColor As Long
    If RGBValue < 0 Then GoTo ReturnError

    rColor = RGBValue Mod 256
    RGBValue = Int(RGBValue / 256)
    gColor = RGBValue Mod 256
    bColor = Int(RGBValue / 256)

    If bColor >= 256 Then GoTo ReturnError
 
    Select Case LCase(Trim(colorWanted))
        Case "red"
            SingleColorFromRGB = rColor
        Case "green"
            SingleColorFromRGB = gColor
        Case "blue"
            SingleColorFromRGB = bColor
        Case Else
            Rem colorWanted is not red, green, or blue
            GoTo ReturnError
    End Select
    Exit Function
ReturnError:
    If TypeName(Application.Caller) = "Range" Then
        SingleColorFromRGB = "error"
    Else
        SingleColorFromRGB = -1
    End If
End Function
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester