[easy_youtube_gallery id=uMK0prafzw0,8Uee_mcxvrw,HcXNPI-IPPM,JvMXVHVr72A,AIXUgtNC4Kc,K8nrF5aXPlQ,cegdR0GiJl4,L-wpS49KN00,KbW9JqM7vho ar=16_9 cols=3 thumbnail=hqdefault controls=0 playsinline=1 privacy=1 title=top wall=1 class=mySuperClass]
Först publicerad: 2009-06-04

VBA och Excels färgpalett

Excels färgpalett innehåller 56 fördefinierade färger (varav 16 färger är till för diagram) vilka du kan modifiera antingen via menyn Tools – Options – Color eller via makro och VBA-kod.

I ett antal exempel så kommer jag att visa hur du modifierar färgpaletten med hjälp av VBA.

Kort om Excel och färgdesign

Flertalet av de fördefinierade färgerna i Excel är ganska starka och kan göra arbetsbladen svåra att ta till sig, varför det kan vara praktiskt att lära sig hur man snabbt och enkelt modifierar paletten.

Färgval och färgtycke är självklart en smakfråga, vilket rent generellt betyder att det inte finns något rätt eller fel vad gäller färg. Just därför bör man försöka undvika alltför starka färger – allt för att Excelbokens design skall passa så många som möjligt och för att innehållet i dina uppställningar skall få så stort genomslag som möjligt. Det kan också vara en god idé att försöka hålla en liknande färgdesign genom arbetsblad och Excelböcker.

Excels initiala färgpalett

De 40 + 16 färgerna i paletten används till att färga innehåll som t ex text, bakgrunder, kantlinjer och diagram. Varje färgruta har ett eget nummer mellan 1 och 56. Tyvärr så följer numreringen inget logiskt mönster utan “hoppar” i kvadraten. Följande VBA-kod skriver ut de 56 färgerna i celler A1 till A56.

Sub Skriva_Ut_Fargpalett()
 
Dim i
 
For i= 1 To 56
 Cells(i, 1).Interior.ColorIndex = i
Next i
 
End Sub

Excel och RGB-färger

Excel uttrycker färger i formatet RGB (Red, Green, Blue).

Det här systemet uttrycker en färg via en blandning av dessa tre färger. Vardera färg ges ett värde mellan 0 och 255, och med hjälp av denna blandning kan drygt 16 miljoner färger uttryckas (256 x 256 x 256).

Svart uttrycks som (0,0,0) medan vitt ges (255,255,255).

Modifiera Excels färgpalett via VBA

Följande kod justerar färgerna 40 och 41 på paletten, och tilldelar dem vissa färgkombinationer i RGB-format.

ActiveWorkbook.Colors(40) = RGB(234, 234, 234)
ActiveWorkbook.Colors(41) = RGB(236, 235, 194)

VBA-kod för att ändra cellers bakgrundsfärg

För att ändra bakgrundsfärg i en markerad cell så använder vi följande kod för att tilldela cellen färg nummer 40 från paletten.

Selection.Interior.ColorIndex = 40

Det går också bra att skriva in färgens RGB-värde direkt:

Selection.Interior.Color = RGB(0, 102, 153)

Samma operation kan även uttryckas i hexadecimal form där färgkoden inleds med “&HC” följt av färgnyansens sexsiffriga hexadecimaltal.

Selection.Interior.Color = &HC006699

Vidare så finns det några specialparametrar för att uttrycka färger:

Selection.Interior.ColorIndex = xlNone   'ingen färg
Selection.Interior.ColorIndex =xlColorIndexAutomatic  'standardfärg
Selection.Interior.ColorIndex =xlColorIndexNone   'ingen färg

Återställa till Excels grundpalett

Den här VBA-koden återställer färgerna så att färgpaletten återspeglar Excels grundinställning.

ActiveWorkbook.ResetColors

Kopiera färgpaletten till en annan Excelbok

Det går bra att kopiera (importera) färgpaletten från en annan Excelbok genom att modifiera egenskapen Colors hos aktuell Excelbok.

ActiveWorkbook.Colors = Workbooks("C:\MinFinFinaGrundPalett.xls").Colors

Ta reda på en cells bakgrundsfärg

Följande VBA-kod återger vilken bakgrundsfärg som cell C1 har.

i = Cells(1, 3).Interior.ColorIndex : MsgBox i

Applicera färg enligt villkor

Nedan ges ett exempel på hur du i VBA kan färga celler enligt uppställda villkor.

For Each Item In Intersect(ActiveSheet.UsedRange, Selection.Cells)
If Item.Text = "Frånvaro" Then
 Item.Interior.ColorIndex = 3
End If
Next