Barvy a nastavení barev ve VBA
Publikováno: 24.11.2019

Nastavení barvy písma, ohraničení a pozadí buňky pomocí vlastností ColorIndex a Color
- Interior
- Color
- ColorIndex
Nastavení barvy písma, ohraničení buňky a pozadí buňky patří k základním znalostem Excelu. V příspěvku půjdu o kousek dál a ukážu vám, jak tyto jednoduché úkony naprogramovat v jazyce Visual Basic for Applications (VBA) a povýšit tím vaše projekty.
Nastavení barvy ve VBA
V zásadě existují 3 možnosti, jak nastavit barvu písma, ohraničení a pozadí buňky. Přičemž k barvám se přistupuje pomocí vlastností ColorIndex a Color.
První možností jsou číselné konstanty, které se přiřazují vlastnosti ColorIndex. Na konci příspěvku je procedura, která vypíše celou paletu barev vlastnosti.
Druhou možností je funkce RGB(), která se používá s vlastností Color. Funkce RGB() kombinuje základní barvy k namíchání všech ostatních barev. Název funkce RGB vychází z anglických názvů barev - červená (red), zelená (green) a modrá (blue). Přičemž rozsah hodnot RGB barev se pohybuje na intervalu od 0 do 255.
Třetí a poslední možností je nastavení barvy pomocí vestavěných VBA konstant. Konstanty se používají s vlastností Color.
Barva | ColorIndex | RGB | Konstanta | HTML | Výsledek |
---|---|---|---|---|---|
Černá | 1 | (0, 0, 0) | vbBlack | #000000 | |
Bílá | 2 | (255, 255, 255) | vbWhite | #ffffff | |
Červená | 3 | (255, 0, 0) | vbRed | #ff0000 | |
Zelená | 4 | (0, 255, 255) | vbGreen | #00ff00 | |
Modrá | 5 | (0, 0, 255) | vbBlue | #0000ff | |
Žlutá | 6 | (255, 255, 0) | vbYellow | #ffff00 | |
Fialová | 7 | (255, 0, 255) | vbMagenta | #ff00ff | |
Azurová | 8 | (0, 255, 255) | vbCyan | #00ffff |
Pro zajímavost jsem doplnil sloupec s hexadecimálním zápisem barev, který se používá v HTML jazyce pro tvorbu webových stránek. Tyto barvy včetně RGB barev běžně najdete v grafickém editoru.
Barva písma
K nastavení barvy písma se přistupuje pomocí vlastnosti Font, ke které se připojují vlastnosti ColorIndex a Color.
Příklad #1
Následující procedura obarví obsah buňky C2 červenou barvou (3).
Sub barva_písma()
Range("C2").Select
Selection.Font.ColorIndex = 3
End Sub
Příklad #2
Další procedura vypíše do sloupce A osm čísel, přičemž první čtyři čísla budou mít modrou barvu (5) a zbývající čtyři červenou (3).
Sub barva_písma_2()
deklarace proměnné
Dim i As Byte
posun do bunky C1
Range("C1").Select
For i = 1 To 8
Cells(i, 1).Value = i
podmíněné větvení kódu
if i < 5 Then
modrá barva fontu
Cells(i, 1).Font.ColorIndex = 5
Else
červená barva fontu
Cells(i, 1).Font.ColorIndex = 3
End If
Next i
End Sub

Dalším a velmi podobným příkladem by mohla být procedura, která zabarví záporná čísla červenou barvou.
Barva ohraničení buňky
K ohraničení buňky se přistupuje pomocí vlastnosti Borders. Princip je naprosto stejný jako v předchozím případě.
Příklad #1
Procedura vybere buňku C8 a nastaví jí červené ohraničení (3).
Sub Ohraničení_buňky()
Range("C8").Select
Selection.Borders.ColorIndex = 3
End Sub
Příklad #2
Napište proceduru, která vypíše do sloupce A čísla od 1 do 8 a každá druhá buňka bude mít červené ohraničení.
Sub Ohraničení_bunky_2()
deklarace proměnných
Dim i, j As Byte
první cyklus
For i = 1 To 8
výpis čísel
Cells(i, 1).Value = i
druhý cyklus
For j = 2 To 8 Step 2
zabarvení ohraničení buňky
Cells(j, 1).Borders.Color = RGB(255, 0, 0)
Next j
Next i
End Sub

Barva pozadí buňky
K nastavení pozadí buňky se používá vlastnost Interior. Nastavení barvy je opět identické jako v předchozích dvou případech. Barvu můžete nastavit pomocí vlastnosti ColorIndex nebo Color.
Příklad #1
Následující procedura vloží do buňky A3 libovolný textový řetězec, přičemž bude vypsán modrou barvou se žlutým pozadím buňky pomocí funkce RGB().
Sub Barva_pozadi()
posun kurzoru do buňky A3
Range("A3").Select
formátování vybrané buňky
With Selection
.Value = "Modrý font se žlutým pozadím buňky"
.Interior.Color = RGB(255, 255, 0)
.Font.Color = RGB(0, 255, 0)
End With
přizpůsobení šířky 3. sloupce obsahu
Range("A3").EntireColumn.Autofit
End Sub
Příklad #2
Další procedura načte barvu pozadí buňky B3 do proměnné a vypíše kód barvy bílou barvou do stejné buňky. Poté vloží do buňky C3 libovolný textový řetězec obarvený barvou pozadí buňky B3. Barvu pozadí načte pomocí vlastností Interior.Color.
Sub barvy()
deklarace proměnné
Dim barva_pozadi As Long
výběr buňky B3, načtení barvy do proměnné a výpis barvy bílým fontem
Range("B3").Select
barva_pozadi = Selection.Interior.Color
With Selection
.Value = barva_pozadi
.Font.Color = RGB(255, 255, 255)
End With
výběr buňky C3, do které se vloží textový řetězec obarvený barvou buňky B3 a přizpůsobení sloupce obsahu
Range("C3").Select
With Selection
.Value = "Visual Basic for Applications je super"
.Font.Color = barva_pozadi
.EntireColumn.AutoFit
End With
End Sub

Příklad #3
Poslední procedura vypíše číselné označení barev vlastnosti ColorIndex včetně zabarvení pozadí buněk ve vedlejším sloupci. Paleta barev ColorIndex obsahuje 56 barev. V polovině procedury se kurzor přesune do prvního řádku a bude pokračovat výpis barev. Posun kurzoru do třetího sloupce zajistí funkce Offset().

Výsledek v sešitu Excel

