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