Keresés ebben a blogban

2011. május 23., hétfő

Színjáték

Találtam egy színgyűjteményt a http://kb.iu.edu/data/aetf.html oldalon, és persze megpróbáltam kihozni belőle valami izgalmasat egy táblázatkezelőben: egy mini-makró, ami bizonyos területeket az általam választott színre fest. A színeket lenyíló listából lehet kiválasztani.


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):

Annak érdekében, hogy a színek kiválaszthatók legyenek egy lenyíló listából, a színlista nevét megadom a Data validationben mindhárom területhez:

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.

Nincsenek megjegyzések:

Megjegyzés küldése