Először is bemásoltam a színkódokat egy munkalapra, aminek az adatbazis nevet adtam. Aztán a színek neveit kijelöltem, és a listát elneveztem Colors-nak.
Ugyanígy nevet adok a területeknek, amiket majd színezni szeretnék, ezek egy másik munkalapon vannak (a munkalap neve Szinezes), a területek neve legyen fal (Wall), padló (Floor) és szőnyeg (Carpet):
A színkódokra is szükség lesz, ezért VLOOKUP függvényekkel megkeresem az R, G, B értékeket mindhárom választott színhez.
Ennyi volt az előkészület, jöhet a mini-makró: Excelben Alt+F11 lenyomásával lehet előhívni a makrószerkesztőt. A Szinezes munkalapon a következő kód fogja végezni a színezést:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$B$3" Then
ColorMe Range("Wall"), ActiveSheet.Cells(3, 3).Value, ActiveSheet.Cells(4, 3).Value, ActiveSheet.Cells(5, 3).Value
ElseIf Target.Address = "$B$12" Then
ColorMe Range("Floor"), ActiveSheet.Cells(12, 3).Value, ActiveSheet.Cells(13, 3).Value, ActiveSheet.Cells(14, 3).Value
ElseIf Target.Address = "$B$15" Then
ColorMe Range("Carpet"), ActiveSheet.Cells(15, 3).Value, ActiveSheet.Cells(16, 3).Value, ActiveSheet.Cells(17, 3).Value
End If
End Sub
Sub ColorMe(myRange As Range, myRed As Integer, myGreen As Integer, myBlue As Integer)
myRange.Interior.Color = RGB(myRed, myGreen, myBlue)
End Sub
Az első rész figyeli, hogy történik-e változás azokban a cellákban, ahol az egyes területek színeit ki lehet választani ($B$3, $B$12, $B$15). Amennyiben új színt választok, a makró akcióba lép és elindítja a második részt, ami maga a színezés. A második, rövidke makró az RGB függvény segítségével kiszínezi a megfelelő cellaterületet.
A fenti módszer felhasználható például a feltételes formázás lehetőségeinek kiterjesztésére: egy cella értékétől függően szabályozhatjuk több független (akár üres) terület celláinak színét.