Avatar billede HHA Professor
09. juli 2021 - 10:50 Der er 9 kommentarer og
1 løsning

VBA for farveskift i celle

Hejsa,

Roder med en VBA til at skifte farve i en celle.
Jeg har 3 forskellige farver jeg gerne vil have den skifter mellem, når jeg klikker på knappen.

Men jeg er sgu ikke skrap til det hersens koderi... 😒

Nogen der kan sætte de rigtige hvis og if ovs ind?

Sub Skifte_farve_i_celle()
'
' Skifte_farve_i_celle Makro

For Each c In Selection.Cells
c.Range.Interior.Color = RGB(0, 176, 80)
If c.Range = RGB(0, 176, 80) Then
c.Range.Interior.Color = RGB(255, 255, 0)
OrIf c.Range = RGB(255, 255, 0) Then
c.Range.Interior.Color = RGB(218, 238, 243)
OrIf c.Range = RGB(218, 238, 243)

End If

End Sub
Avatar billede kim1a Ekspert
09. juli 2021 - 11:51 #1
Det giver ikke helt mening. Du sætter alle celler til en farve, og derefter siger du hvis den har den farve så skift den til denne farve. Kan du prøve at beskrive hvad du gerne vil? Mit gæt er følgende:
En case løbe igennem farverne sådan:
Anden farve/ukendt/ny
RGB(0, 176, 80)
RGB(255, 255, 0)
RGB(218, 238, 243)

Har jeg forstået det rigtigt?
Avatar billede HHA Professor
09. juli 2021 - 12:08 #2
Jeg har en knap, som jeg vil have til at skifte de markerede celler til en farve.
Hvis cellen fx er RGB(0, 176, 80), så skal den skifte til RGB(255, 255, 0) og klikker jeg igen, skal den skifte cellefarven til RGB(218, 238, 243).
Og er cellen RGB(218, 238, 243) skal den skifte den til RGB(0, 176, 80).

Altså for hvert klik skal den skifte til næste farve (ud af de 3).
Avatar billede store-morten Ekspert
09. juli 2021 - 12:32 #3
Sub Skifte_farve_i_celle()
'
' Skifte_farve_i_celle Makro

For Each c In Selection.Cells

If c.Interior.Color = RGB(0, 176, 80) Then
c.Interior.Color = RGB(255, 255, 0)
Exit Sub
End If

If c.Interior.Color = RGB(255, 255, 0) Then
c.Interior.Color = RGB(218, 238, 243)
Exit Sub
End If

If c.Interior.Color = RGB(218, 238, 243) Then
c.Interior.Color = RGB(0, 176, 80)
Exit Sub
End If

Next

End Sub
Avatar billede store-morten Ekspert
09. juli 2021 - 12:44 #4
Rettelse:
Sub Skifte_farve_i_celle()
'
' Skifte_farve_i_celle Makro

For Each c In Selection.Cells

If c.Interior.Color = RGB(0, 176, 80) Then
c.Interior.Color = RGB(255, 255, 0)
GoTo Næste
End If

If c.Interior.Color = RGB(255, 255, 0) Then
c.Interior.Color = RGB(218, 238, 243)
GoTo Næste
End If

If c.Interior.Color = RGB(218, 238, 243) Then
c.Interior.Color = RGB(0, 176, 80)
GoTo Næste
End If

Næste:
Next

End Sub
Avatar billede kim1a Ekspert
09. juli 2021 - 17:27 #5
Yes, perfekt. Er du sikker på du ikke skal have en hvor den skifter alle andre til en "startfarve"?
En celle som ved en fejl er noget 4. i farven vil ikke blive berørt overhovedet.
Avatar billede HHA Professor
10. juli 2021 - 09:15 #6
Takker store-morten,

Virker lige som jeg ville have den til.
Sparer mig for mange klik.

#5 kim1a
Er ikke helt sikker på hvad du mener, som udgangspunkt er cellerne RGB(0, 176, 80) (den lyseblå)
Og hvis det jeg har indtastet er endeligt og ikke skal tjekkes mere, så farver jeg en celle grøn. Kræver det fx lige en gennemgang mere, så markerer jeg den med gult.
Det sparer mig for mange klik, ikke at skulle op og vælge farve i menuen øverst.
Avatar billede kim1a Ekspert
10. juli 2021 - 10:04 #7
Ja, det er jeg helt enig med dig i. Jeg tænkte bare at hvis du nu kopierede ind fra et andet sted var de måske oprindelig ikke lyseblå - eller måske farvemæssigt en smule ved siden af.
Jeg har ikke forstand på RGB, men kan den f.eks. være (0,175,80) så man ikke kan se det med det blotte øje.

Det var såmænd det eneste jeg overvejede - lidt "sikkerhed" i løsningen.
Avatar billede store-morten Ekspert
10. juli 2021 - 11:17 #8
Jeg ville også vælge at bruge Interior.ColorIndex i stedet for RGB :-)
Avatar billede HHA Professor
10. juli 2021 - 15:18 #9
Hej kim1a og store-morten,

Vi har brugt disse 3 farver hele tiden og jeg syntes ikke de findes i colorindex, men kan godt være jeg ikke har set ordentligt efter.
Men de findes dog i menuen øverst som "standardfarver".
Avatar billede store-morten Ekspert
10. juli 2021 - 15:55 #10
Okay, det er kun gul der er i standardfarver.
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

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