Barvy ve VBA jsou tématem, které dokáže nadchnout, nudit i otrávit. Každopádně se mu vyhnout nemůžeme. Pojďme na to. Práce s barvou Záznamník maker

Podobné dokumenty
OBSAH Úvod do VBA... 6 K čemu VBA... 6 Když VBA nestačí... 6 Historie Visual Basicu... 7 Objektový model, vlastnosti, metody, události a funkce...

Dialog Najít a nahradit

Odstranění řádků (na základě hodnoty)

8 Makra Příklad 4 Excel 2007

Dialog Vzhled stránky

Barvy v počítači a HTML.

Povrchový (obrysový graf)

Rozšíření bakalářské práce

POVRCHOVÝ (OBRYSOVÝ GRAF)

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Různé barvy v grafu pro skutečnost a plán

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

Barvy a barevné modely. Počítačová grafika

Různé barvy v grafu pro skutečnost a plán

Webové stránky. 6. Grafické formáty pro web. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

Makra. Orámování oblasti

Multimediální systémy. 02 Reprezentace barev v počítači

Panely pro práci s barvami a ohraničením v Excelu 2003 a 2010

Hromadná změna datumu a času v buňkách

Visual Basic for Application

Automatická barva písma a výplň bez Bez barvy

Řízení robota pomocí senzoru barev. Tematický celek: Světlo. Úkol:

Na úvod tip, jak kontrolovat šířku tabulky před a po změně. Chování makra ukazují obrázky. Jak změnit rastr v hotové tabulce Excelu

Práce na počítači. Bc. Veronika Tomsová

Barva. v počítačové grafice. Poznámky k přednášce předmětu Počítačová grafika

Počítačová grafika. OBSAH Grafické formy: Vektorová grafika Bitmapová (rastrová grafika) Barevné modely

V článku Skrytý obsah na listu (1) jsme se zabývali obecnými možnosti skrývání obsahu. Dnes se na dané téma podíváme prakticky.

Digitální učební materiál

Barevné modely, práce s barvou. Martin Klíma

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

Světlo. Podstata světla. Elektromagnetické záření Korpuskulární charakter. Rychlost světla. Vlnová délka. Vlnění, foton. c = ,8 km/h

1. Nastavení dokumentu

Slíbená princezna. Univerzální ComboBox

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Počítačová grafika - úvod

MS Excel makra a VBA

Spojování textových řetězců na listu

Parsování HTML. Pro účely testování jsem vytvořil stránku parsovani.html. Zdrojový kód:

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/

Barvy a barevné systémy. Ivo Peterka

Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO

Makro. PDF vytvořeno zkušební verzí pdffactory Pro

Tvorba posterů prakticky

Teorie barev. 1. Barvený model. 2. Gamut. 3. Barevný prostor. Barevný prostor různých zařízení

Úvod do Adobe Illustrator CS 5

Gymnázium Boženy Němcové

DUM 01 téma: Úvod do počítačové grafiky

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

VYUŽITÍ POČÍTAČOVÉ GRAFIKY

Barevné systémy Josef Pelikán CGG MFF UK Praha

Tabulka obsluhovaná kódem VBA

Úvod do počítačové grafiky

Tvorba posterů v PowerPointu a InDesignu

Registrační číslo projektu: CZ.1.07/1.5.00/ Název projektu: Moderní škola 21. století. Zařazení materiálu: Ověření materiálu ve výuce:

Barvy v počítačové grafice

Elements. Grafický manuál. Vypracoval Šimon Genzer

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

VBA: VYTVOŘENÍ OBJEKTU GRAF (CHART) Deklarace proměnné typu Chart. Pro vytvoření nového grafu použijeme kolekci ChartObjects a její metodu Add.

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Počítačová grafika. Studijní text. Karel Novotný

Tvorba mapy mapové značky (1)

Základy počítačové grafiky

OCAD 11 Tvorba mapy - mapové značky

tipu pro kvalitní tisk Na jednoduchých příkladech Vám ukážeme jak postupovat a na co si dávat pozor při přípravě podkladů pro kvalitní tisk.

Výukový materiál v rámci projektu OPVK 1.5 Peníze středním školám

Gymnázium Jana Pivečky a Střední odborná škola Slavičín. III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Informační a komunikační technologie Inovace výuky prostřednictvím šablon pro SŠ

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Zobrazení zdrojových dat u krabicového grafu

MS Excel Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

Mezipředmětové výukové téma Barvy kolem nás I.

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Mezipředmětové výukové téma Barvy kolem nás II.

Logo cz pl Grafické zásady

Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu:

10 Algoritmizace Příklad 2 Word 2007/ VBA

EXCEL VBA. Programování aplikací v Excelu. Aplikační software na PC

DUM 06 téma: Tvorba makra pomocí VBA

Grafické systémy. Obrázek 1. Znázornění elektromagnetického spektra.

Informační a komunikační technologie pro učební obory ME4 a SE4. Makra

Barvy. Radek Fiala. Podpořeno z projektu FRVŠ 584/2011

Grafický manuál Zelená vlna, Zpravodaj Zelené vlny

Níže uvedená tabulka obsahuje technické údaje a omezení aplikace Excel (viz také článek Technické údaje a omezení aplikace Excel (2007).

3MA481 Propojení Accessu a Excelu David Hach

Základy informatiky. 10 Počítačová grafika

Kódy pro formát čísla

2. Najeďte si kurzorem myši do pravého spodního rohu k symbolu malého černého čtverečku kurzor myši se změní na černý nitkový kříž.

Kde se používá počítačová grafika

Zpracování chybějících dat a dat mimo rozsah

VOLBA BAREVNÝCH SEPARACÍ

ODRAZ A LOM SVĚTLA. Mgr. Jan Ptáčník - GJVJ - Septima - Fyzika - Optika

Světlo, které vnímáme, představuje viditelnou část elektromagnetického spektra. V

Programátorská dokumentace

Barvy v počítačové grafice

BARVY. Příkaz barva. Barvy TrueColor. Se objeví dialogové okno

Nemocnice Plzeňského kraje. Obsah. Logo manuál Logotyp

Grafický manuál jednotného vizuálního stylu

Transkript:

Barvy ve VBA jsou tématem, které dokáže nadchnout, nudit i otrávit. Každopádně se mu vyhnout nemůžeme. Pojďme na to. V úvodu vyzkoušíme, jak práci s barvami vidí Záznamník maker. Práce s barvou Záznamník maker Upravenou proceduru ukazuje následující výpis. Sub Makro1() 'Černá, Text1, velmi světlá 35 % 'barva pozadí With Selection.Interior.Pattern = xlsolid.patterncolorindex = xlautomatic.themecolor = xlthemecolorlight1.tintandshade = 0.349986266670736.PatternTintAndShade = End With 'barva písma With Selection.Font.ThemeColor = xlthemecolorlight1.tintandshade = 0.349986266670736 Excelplus.NET 1

End With End Sub Už první pohled do kódu naznačuje, že práce s barvami může být pěkný opruz. Nejsem nejspíš tak dobrý angličtinář, abych rozlišil význam slov tint a shade, navíc zkušenost říká, že s hodnotou této vlastnosti asi není něco v pořádku (už od oka by měla být 0,35 značící 35 %). A světe div se, zatímco po spuštění procedury se obarví pozadí, písmo ne. Zaokrouhlení hodnoty nepomůže. Chvíli jsem chybu studoval v diskusích na internetu a pak jsem daný způsob práce s barvami opustil. Máme jinou možnost? Ano. V Excelu 2003 a starších existovala strohá paleta 256 barev a práce se odvíjela především od vlastnosti ColorIndex. Dnes se k ní vrátíme pouze na skok. Doba pokročila, paleta se rozrostla, a naším cílem bude vlastnost Color (datový typ Long). Obarvíme si tedy podle stávající palety (zde Excel 2007/2010) pár buněk a hodnotu Color pro ně zjistíme. Sub BarvyColor() Color standardní paleta barev (Excel 2010) Dim rngbunka As Range 'pro každou buňku ve výběru For Each rngbunka In Selection Excelplus.NET 2

'přiřazení hodnoty barvy do buňky rngbunka.value = rngbunka.interior.color Next rngbunka End Sub A nyní se podívejte, jak zatočíme s kódem ze Záznamníku maker Sub Makro1() 'Černá, Text1, velmi světlá 35 % 'Záznamník maker 'barva pozadí 'ok 'With Selection.Interior '.Pattern = xlsolid '.PatternColorIndex = xlautomatic '.ThemeColor = xlthemecolorlight1 '.TintAndShade = 0.349986266670736 '.PatternTintAndShade = 0 'End With 'Záznamník maker 'barva písma 'špatně 'With Selection.Font '.ThemeColor = xlthemecolorlight1 '.TintAndShade = 0.349986266670736 'End With 'nepomůže ani zaokrouhlení 'With Selection.Font '.ThemeColor = xlthemecolorlight1 '.TintAndShade = 0.35 Excelplus.NET 3

'End With 'ok 'barva písma Selection.Interior.Color = 5855577 'barva pozadí Selection.Font.Color = 5855577 End Sub SLADĚNÍ BAREV NA LISTU Ukážeme si, jak sjednotit barvu vyskytující se v buňce, tvaru a v datové řadě grafu. Sladění barev buňka Excelplus.NET 4

Sladění barev tvar Excelplus.NET 5

Sladění barev datová řada v grafu Sub SladitBarvy() Dim intred As Integer Dim intgreen As Integer Dim intblue As Integer With ActiveSheet 'náhodné složky barvy RGB intred = Int(256 * Rnd) intgreen = Int(256 * Rnd) intblue = Int(256 * Rnd) Excelplus.NET 6

'obarvení tvaru.shapes("rectangle 1").Fill.ForeColor.RGB = RGB(intRed, intgreen, _ intblue) 'obarvení řady grafu.chartobjects("graf 1").Chart.SeriesCollection(1).Format.Fill.ForeColor.RGB _ = RGB(intRed, intgreen, intblue) 'převzetí barvy prvku buňkou '.Range("E2").Interior.Color = RGB(intRed, intgreen, intblue).range("e2").interior.color =.Shapes("Rectangle 1").Fill.ForeColor.RGB End With End Sub V kódu se potkáváme kromě vlastnosti Color ještě s vlastností RGB a také s funkcí RGB. Obecně zkratka RGB představuje jeden z barevných modelů pro zobrazovací zařízení, v němž jsou barvy namíchány ze tří složek R (Red, červená), G (Green, zelená) a B (Blue, modrá). Hodnoty každé z nich se pohybují mezi 0-255. Složky RGB pro pozadí buňky zjistíme po rozklepnutí tlačítka Barva výplně (ikonka plechovky s barvou) a vybráním položky Další barvy. Otevře se dialog Barvy a požadované informace se nachází pod záložkou Vlastní. SLADĚNÍ BAREV S FORMULÁŘEM A WEBEM Visual Basic používá své vlastní kódy s barvami. Excelplus.NET 7

Barvy na formuláři a) &H0080C0FF& rozdělení na části &H00 80 C0 FF & &H hexadecimální číslo &H00 vlastní barva Visual Basicu 80 B (blue, modrá složka barvy) C0 G (green, zelená složka barvy) FF R (red, červená složka barvy) & typový znak pro Long b) &H80000012& rozdělení na části &H80 00 00 12 & &H hexadecimální číslo &H80 systémová barva 12 pořadové číslo (odpovídá vbbuttontext, tj. barva textu na tlačítku) & typový znak pro Long Excelplus.NET 8

Složky systémové barvy lze zjišťovat přes API funkci, nicméně jsem narazil na několik nesrovnalostí a tuto variantu vypustil z úvah. Poznámka Převod mezi číselnými soustavami zvládá na listu Excelu funkce HEX2DEC (DEC2HEX): HEX2DEC( FF ) = 255 HEX2DEC( C0 ) = 192 HEX2DEC( 80 ) = 128 DEC2HEX(255) = FF DEC2HEX(192) = C0 DEC2HEX(128) = 80 Na webu, v kódu HTML (CSS) se zpravidla setkáme s následující syntaxí: #FFC080 rozdělení na části # FF C0 80 # (hexadecimální) číslo FF R (red, červená složka barvy) C0 G (green, zelená složka barvy) 80 B (blue, modrá složka barvy) I zde je možné ovšem vyjádřit barvu v systému RGB: rgb(255,192,128) PŘEVOD BAREV V příloze jsou uvedeny funkce pro převod barev. Pokud je chcete používat na listu, přidejte do nich řádek Application.Volatile. I tak je nutné si uvědomit, že změna barvy buňky není pro Excel důvodem automaticky přepočítat list, tudíž si jej budete muset vynutit stiskem klávesy F9. Sluší se uvést, že procedury až na výjimky nejsou mé vlastní, pouze jsem je částečně upravil k obrazu svému. Vesměs jsem vycházel ze stránek VB Helper. Kromě zmíněného barevného modelu RGB existují další. Možná jste slyšeli o modelu HSL (Hue, Excelplus.NET 9

Saturation, Luminance, tj. odstín, saturace a světlost). Dialog Barvy v Excelu jej sice zvládá, nicméně převod barev u něj je problematický a záleží na postupu. Za zmínku stojí ještě model CMYK (Cyan, Magenta, Yellow, black, tj. složky azurové, purpurové, žluté a černé barvy), uplatňující se při tisku. Převod opět není jednoduchý a pro tyto účely sahám vždy po tištěném vzorkovníku. V domácích podmínkách nečekejte, že barva bude stejná na monitoru i po tisku. Navíc hry vstupuje celá řada proměnných, které zde není možné rozebírat. Pokud barvu vidíte a neznáte pouze její hodnotu, pak veškerou práci svěřte aplikaci. Mým vítězem je Kolorgenerator (freeware, přenositelný na flash fisku). Stačí barvu natáhnout kapátkem a hned víte RGB, HTML či VB kód. ROZLIŠENÍ BAREV Kolorgenerator V plné rychlosti teď zařadíme zpátečku. Proč? Barevné hrátky v Excelu končí první černobílou tiskárnou (kopírkou). Řada barev tak splyne v jednolitou šedou. Proto je vhodné rozhodování se na základě barvy směřovat k jiným ukazatelům. Ostatně barvy nevnímáme všichni stejně, nemluvě o barvosleposti a dalších očních vadách. Vyhněte se pokud možno obarvování písma a dbejte, aby bylo vhodně kontrastní vůči pozadí. Osobně zpravidla volím pouze černou nebo bílou barvu textu, v případě detailnějšího stylování buněk odstín šedé. V grafech doporučuji vybírat i jiný typ čáry (čárkovaná, čerchovaná) a tvar značky datového bodu (trojúhelník, kolečko, čtverec). Jak to dopadne s barvami po převodu do odstínů šedi, a jak na kontrastní písmo, si předvedeme na původní paletě Excelu 2003. Excelplus.NET 10

Převod do odstínu šedé a kontrastní písmo Sub PrevestBarvyDoSede() Dim i As Integer Dim intred As Integer Dim intgreen As Integer Dim intblue As Integer Dim inty As Integer Dim intz As Integer Dim y As Double Dim lngbarva As Long With ActiveSheet For i = 1 To 56 '************* 'první sloupec '************* 'barva pozadí, vlastnost ColorIndex (Excel 2003) Excelplus.NET 11

.Cells(i, 1).Interior.ColorIndex = i 'hodnota.cells(i, 1) = i 'převzetí barvy jako vlastnost Color lngbarva =.Cells(i, 1).Interior.Color 'rozklad barvy na složky červené, zelené a modré intred = lngbarva And 255 intgreen = lngbarva \ 256 And 255 intblue = lngbarva \ 65536 And 255 'jaká barva fontu na barevné pozadí intz = (((0.3 * intred) + (0.59 * intgreen) + (0.11 * intblue)) < _ 150) * -255 'barva písma, vlastnost Color, funkce RGB.Cells(i, 1).Font.Color = RGB(intZ, intz, intz) '************* 'druhý sloupec '************* 'ekvivalentní odstín šedé 'inty = (intred * 0.3 + intgreen * 0.59 + intblue * 0.11) 'inty = (intred * 0.2126 + intgreen * 0.7152 + intblue * 0.0722) 'ITU-R Recommendation BT.601 inty = (intred * 0.299 + intgreen * 0.587 + intblue * 0.114) 'barva pozadí, vlastnost Color, funkce RGB.Cells(i, 2).Interior.Color = RGB(intY, inty, inty) 'hodnota.cells(i, 2) = inty Excelplus.NET 12

'jaká barva fontu na barevné pozadí intz = (((0.3 * intred) + (0.59 * intgreen) + (0.11 * intblue)) < _ 150) * -255 'barva písma, vlastnost Color, funkce RGB.Cells(i, 2).Font.Color = RGB(intZ, intz, intz) Next i End With End Sub Příloha barvy_vba.zip Excelplus.NET 13