Avatar billede LS-Falster Juniormester
06. januar 2012 - 11:19 Der er 5 kommentarer og
1 løsning

Automatisk farve af celler ved forskellige værdier (flere end 3)

Hej

Jeg har behov for en makro, som kan farvelægge celler i regnearket ud fra følgende forudsætninger:

Hvis celleværdi = A, så farves celle rød
Hvis celleværdi = B, så farves celle gul
Hvis celleværdi = C, så farves celle grøn
Hvis celleværdi = D, så farves celle blå
Hvis celleværdi = E, så farves celle sort
Hvis celleværdi = F, så farves celle grå

Jeg startede med betinget formatering, men der kan jeg kun lave 3 forskellige betingelser, så vidt jeg ved.

Mvh Lars
Avatar billede igoogle Forsker
06. januar 2012 - 11:20 #1
hvilken office ?
Avatar billede LS-Falster Juniormester
06. januar 2012 - 12:41 #2
Det er Excel 2003.
Avatar billede Ialocin Novice
06. januar 2012 - 13:08 #3
Haj Lars

Prøv evt. følgende i arkets Change_hændelse:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim værdi As String

'sæt værdi = værdien i den aktuelle celle
værdi = Target.Value

    Select Case værdi
   
        'rød
        Case "A"
       
            Target.Interior.Color = RGB(255, 0, 0)
           
        'gul
        Case "B"
       
            Target.Interior.Color = RGB(255, 255, 0)
       
        'grøn
        Case "C"
       
            Target.Interior.Color = RGB(0, 255, 0)
           
        'blå
        Case "D"
       
            Target.Interior.Color = RGB(0, 0, 255)
       
        'sort
        Case "E"
       
            Target.Interior.Color = RGB(0, 0, 0)
       
        'grå
        Case "F"
       
            Target.Interior.Color = RGB(100, 100, 100)
           
        'ellers hvid
        Case Else
       
            Target.Interior.Color = RGB(255, 255, 255)
            Target.ClearFormats
                           
    End Select
   
End Sub


Med venlig hilsen, Nicolai
Avatar billede store-morten Ekspert
06. januar 2012 - 15:40 #4
Eller:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo exit_Sub  'Ved fejl exit Sub

    Dim v As String    'variabler til indtastet celle værdi
    Dim u As String
    v = Target.Value    'v = aktiv celle værdi
    u = UCase(v)        'u = den aktive celle værdi som stort bogstav

' If Not Intersect(Range("A5:A25"), Target) Is Nothing Then
With Target
    Select Case u
        Case "A"
        .Interior.ColorIndex = 3    'A = Rød
        Case "B"
        .Interior.ColorIndex = 6    'B = Gul
        Case "C"
        .Interior.ColorIndex = 10  'C = Grøn
        Case "D"
        .Interior.ColorIndex = 5    'D = Blå
        Case "E"
        .Interior.ColorIndex = 1    'E = Sort
        Case "F"
        .Interior.ColorIndex = 16  'F = Grå 50%
        Case Else
        .Interior.ColorIndex = xlNone  'Tom celle, ingen farve
    End Select
End With
' End If
exit_Sub:
        Exit Sub
End Sub

'Farvekoder til Interior.Colorindex
      '0        = Tom              1        = Sort
      '2        = Hvid              3        = Rød
      '4        = KnaldGrøn        5        = Blå
      '6        = Gul              7        = Pink
      '8        = Turkis            9        = Rødbrun
      '10        = Grøn            11        = Mørkeblå
      '12        = Olivengul        13        = Violet
      '14        = Blågrøn          15        = Grå 25%
      '16        = Grå 50%          17        = Støvet Blå
      '18        = Blomme          19        = Støvet Lys Gul
      '20        = Blegturkis      21        = Støvet Violet
      '22        = Støvet Lyserød


Linien: ' If Not Intersect(Range("A5:A25"), Target) Is Nothing Then
Og:
Linien: ' End If

Kan aktiveres og tilpasses, så et bestemt område for farveskift bestemmes. Her A5:A25
Avatar billede LS-Falster Juniormester
09. januar 2012 - 11:34 #5
Hej Nicolai

Det virker lige efter planen, men hvis jeg kunne få bogstavet farvet i samme farve som cellen, ville det være ekstra godt.

Under alle omstændigheder var du hurtigst med et svar, så du må gerne smide et svar.

Mvh Lars
Avatar billede Ialocin Novice
09. januar 2012 - 12:02 #6
Hej Lars

Mange tak :o)
Her med mit svar.

Her er en ny kodesnas, som er tilføjet det med bogstavfarverne.
Prøv det og lad høre, hvis det ikke fungerer efter hensigten ?


Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler

Dim værdi As String
       
       
                'sæt værdi = værdien i den aktuelle celle
                værdi = Target.Value
               
                With Target
               
               
                    Select Case værdi
                   
                        'rød
                        Case "A"
                       
                            .Interior.Color = RGB(255, 0, 0)
                            .Font.Color = RGB(255, 0, 0)
                           
                        'gul
                        Case "B"
                       
                            .Interior.Color = RGB(255, 255, 0)
                            .Font.Color = RGB(255, 255, 0)
                                                   
                        'grøn
                        Case "C"
                       
                            .Interior.Color = RGB(0, 255, 0)
                            .Font.Color = RGB(0, 255, 0)
                           
                        'blå
                        Case "D"
                       
                            .Interior.Color = RGB(0, 0, 255)
                            .Font.Color = RGB(0, 0, 255)
                       
                        'sort
                        Case "E"
                       
                            .Interior.Color = RGB(0, 0, 0)
                            .Font.Color = RGB(0, 0, 0)
                       
                        'grå
                        Case "F"
                       
                            .Interior.Color = RGB(100, 100, 100)
                            .Font.Color = RGB(100, 100, 100)
                           
                        'ellers hvid
                        Case Else
                       
                            Target.Interior.Color = RGB(255, 255, 255)
                            Target.ClearFormats
                                           
                    End Select
               
                End With
   
Exit Sub


ErrorHandler:


Resume Next
 
           
End Sub


Med venlig hilsen, Nicolai
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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