Avatar billede Finansfreak Nybegynder
08. august 2010 - 01:31 Der er 7 kommentarer

Automatisk farvning af celler

Hej,

Jeg håber en af jer kan lave en enkel løsning i VBA til mig. Det drejer sig om automatisk farvning af celler.

Normalt vil jeg anvendt conditional formatting, men denne gang skal der mindst anvendes 4 mindst alternativer. Den gamle løsning kan ikke anvendes, da der maksimalt kan laves tre begræsninger i Excel 2003 til XP.

Kort sagt drejer det sig om, at jeg helst grafisk skal vise, når en celle opfylder et krav. Hvis vi betragter cellerne A5:A25, så vil jeg gerne have farvet dem i rød, gul, grøn og blå, når disse opfylder et af de fire krav.

Min ønske er, at jeg skal kunne indtaste et bogstav - A, B, C, D, hvilket svarer til en farve i kolonnen. Eksempelvis:

Celle A5, indtaste A -> cellen rød
Celle A6, indtaste D -> cellen grøn
Celle A7, indtaste C -> cellen gul
Celle A8, indtaste A -> cellen Rød
Celle A9, indtaste B -> cellen Blå

Min formodning er, at det kan løses i vba, og jeg vil derfor være glad, hvis der er nogen, som kan give en løsning, hvor det blot er farven og cellerne, der eventuelt skal ændres.

På forhånd tak!
Avatar billede store-morten Ekspert
08. august 2010 - 03:29 #1
Forslag:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A5:A25"), Target) Is Nothing Then
With Target
    Select Case Target.Value
        Case "A"
        .Interior.ColorIndex = 3    'A = Rød
        Case "B"
        .Interior.ColorIndex = 5    'B = Blå
        Case "C"
        .Interior.ColorIndex = 6    'C = Gul
        Case "D"
        .Interior.ColorIndex = 4    'D = Grøn
        Case Else                  'Tom celle, ingen farve
        .Interior.ColorIndex = xlNone
    End Select
End With
End If
End Sub
Avatar billede Ialocin Novice
08. august 2010 - 03:39 #2
Hej Finansfreak

Kan dette bruges ?

Følgende kode i arkets Change hændelse virker på alle arkets felter ... uanset om der skrives at lille eller et stort bogstav.
Hvis det tastet et andet bogstav end A, B, C eller det, slettes det automatisk og cellen forbliver tom.
Hvis et af de indtastede A, B, C eller D´er slettes, ryddes feltets farve automatisk.


Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo change_color
   
    'variabler til indtastet celle værdi
    Dim v As String
    Dim u As String
   
   
    'v = aktiv celle værdi
    v = Target.Value
   
    'u = den aktive celle værdi som stort bogstav
    u = UCase(v)
   
   
   
       
            'hvis der ikke er tastet noget i den aktive celle
            If u = "" Then
           
                'ryd cellens farve
                Target.ClearFormats

                   
                'forlad proceduren
                Exit Sub
           
           
            Else
               
               
                    Select Case u
                   
                        'der er tastet A
                        Case "A"
                                               
                            'sæt cellens farve til rød
                            Target.Interior.Color = RGB(255, 0, 0)
                       
                        'der er tastet B
                        Case "B"
                       
                            'sæt cellens farve til blå
                            Target.Interior.Color = RGB(0, 0, 255)
                       
                        'der er tastet C
                        Case "C"
                       
                            'sæt cellens farve til gul
                            Target.Interior.Color = RGB(255, 255, 0)
                       
                        'der er tastet D
                        Case "D"
                       
                            'sæt cellens farve til grøn
                            Target.Interior.Color = RGB(0, 255, 0)
                       
                       
                        'der er tastet alt andet end A, B, C eller D
                        Case Else
                       
                     
                            'ryd cellens indhold
                            Target.ClearContents
                                           
                           
                    End Select
           
           
             
   
            End If
   
   
           
   
   
exit_change_color:
        Exit Sub
   
   
'evt fejlmeddelelse
change_color:
           
     
     
        Resume exit_change_color
   

End Sub



mvh Nicolai
Avatar billede Finansfreak Nybegynder
08. august 2010 - 15:15 #3
Tak for svarene!

Jeg har forsøgt at køre dem, men der sker intet. Virker det hos jer?
Avatar billede Finansfreak Nybegynder
08. august 2010 - 15:16 #4
Det er forresten nok, at det sker i en enkelt kolonne.
Avatar billede store-morten Ekspert
08. august 2010 - 16:03 #5
Ja, hos mig virket det i A1 til A25
Når jeg taster A, B, C eller D
Avatar billede Finansfreak Nybegynder
08. august 2010 - 16:42 #6
Jeg har forsøgt adskillige gange, og det virker bare ikke. Jeg har fundet en lignende løsning, hvor man sammenligner to kolonner. Det virker dog.

Har du mulighed for at sende arket til finansfreak(at)yahoo.dk?
Avatar billede store-morten Ekspert
08. august 2010 - 16:45 #7
Sendt
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