Geek tričko zdarma Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde

Lekce 3 - Makra pro práci s konkrétní buňkou, řádkem či sloupcem

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Minulá lekce, Klasické Hello a úvod do OOP pro makra, nás seznámila s pojmem objekt, vlastnost objektu a metoda objektu. V dnešní lekci se podíváme zejména na to, jak říci, že chceme pracovat s konkrétní buňkou, řádkem či sloupcem (v aktuálním listu). Vyzkoušíme a vysvětlíme si Offset, který popisuje buňku či oblast posunutou vůči jiné buňce či oblasti buněk.

Níže uvedené objekty jsou stejného typu, lze tedy předpokládat, že mají k dispozici stejné vlastnosti a metody.

Objekt ActiveCell - aktivní buňka

Zadání: Zapište do aktivní buňky hodnotu 100.

U ActiveCell budeme měnit hodnotu Value, tedy ji přiřadíme pomocí =. Hodnotu lze vnímat jako číslo 100, nebo jako řetězec "100". V tomto případě je to jedno, tedy se nabízí dvě správná řešení.

Sub zmen_aktivni()
    ' ActiveCell.Value = "100"  hodnota 100 je vnímána jako řetězec
    ActiveCell.Value = 100      'hodnota 100 je vnímána jako číslo
End Sub

Zadání: V dialogovém okně zobrazte adresu aktivní buňky.

Vlastnost Address obsahuje absolutní adresu buňky, vlastnost Row obsahuje číslo řádku a vlastnost Column obsahuje číslo sloupce. Jelikož je před vlastnostmi objekt ActiveCell, vztahují se k němu:

Sub adresa_aktivni()
    MsgBox "Absolutní adresa je " & ActiveCell.Address
    MsgBox "Řádek: " & ActiveCell.Row & " Sloupec: " & ActiveCell.Column
End Sub

Zadání: Zapište do aktivní buňky své křestní jméno a do následující (předchozí) buňky své příjmení.

Zápis křestního jména provedeme příkazem ActiveCell.Value = "Jméno", pro zápis příjmení se musíme dostat do následující (předchozí) buňky.

Protože se chceme v listu posunout o určitý počet buněk od aktivní buňky, použijeme Offset(RowOffset, ColumnOffset). Offset má dva parametry, jejichž hodnota musí být celé číslo. První parametr určuje o kolik řádků a kam je posunuta cílová buňka (0 neposunuje se, kladné číslo směrem dolů, záporné číslo směrem nahoru). Druhý parametr určuje o kolik sloupců a kam je posunuta cílová buňka (0 neposunuje se, kladné číslo směrem vpravo, záporné číslo směrem vlevo).

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Tedy od aktivní buňky ActiveCell se posuňme do následující buňky Offset(0, 1) a tam nás zajímá vlastnost Value. Použijeme tečkovou notaci. Protože chceme hodnotu měnit, přiřadíme pomocí = novou hodnotu, v tomto případě "Příjmení".

Sub jmeno_prijmeni_aktivni()
    ActiveCell.Value = "Jméno"
    ActiveCell.Offset(0, 1).Value = "Příjmení"
End Sub

Při zápisu do předchozí buňky místo Offset(0, 1) bude Offset(0, -1) a zbytek kódu zůstává. Pokud bychom chtěli příjmení napsat do buňky pod, použijeme Offset(1, 0), do buňky nad Offset(-1, 0).

Offset v makrech v Microsoft Office Excel

Objekt Cells - buňka

Pro určení jedné konkrétní buňky lze použít Cells(Row, Column). První parametr určuje číslo řádku buňky a druhý číslo sloupce. Tedy například buňka A2 je Cells(2, 1), buňka B5 je Cells(5, 2), buňka C1 je Cells(1, 3).

Zadání: Naprogramujte všechna zadání, která jste řešili pro aktivní buňku, tentokrát pro buňku B5.

Řešení je opět velmi jednoduché. Původně jsme pracovali s aktivní buňkou ActiveCell, teď chceme pracovat s buňkou B5 Cells(5, 2). ActiveCell nahradíme Cells(5, 2) a zbytek zůstane stejný.

Správně se dalo předpokládat, že vlastnosti a metody pro buňku, ať už je to buňka aktivní nebo buňka s konkrétní adresou, budou stejné. Zrovna tak i u oblastí se dá s těmito vlastnostmi a metodami počítat.

Objekt Rows – řádek

Tento objekt lze využít pro určení jednoho řádku. Číslo řádku uvádíme v parametru.

Zadání: Změňte barvu pozadí celého prvního řádku.

Budeme pracovat s prvním řádkem, tedy Rows(1). Zajímá nás výplň Interior a barva, což je vlastnost Color. Základní barvy lze zapsat přes vbBarva, jak je uvedeno v komentáři. Krom bílé vbWhite jsou to základní barvy v tiskárně s barevným modelem CMYK (vbMagenta, vbCyan, vbYellow, vbBlack) a základní barvy monitoru s barevným modelem RGB (vbRed, vbGreen, vbBlue).

Já mám raději zápis využívající přímo barevný model RGB, kde se barva skládá ze tří složek. První určuje množství červené (Red), druhá zelené (Green) a třetí modré (Blue). Hodnota je celé číslo od 0 do 255 včetně.

Sub format_radek()
    Rows(1).Interior.Color = RGB(0, 0, 0) 'to samé jako vbBlack
End Sub

Pro změnu barvy lze použít taktéž vlastnost ColorIndex. Hodnotu xlNone použijeme, pokud chceme mít buňku bez výplně, celočíselnou hodnotu, pokud chceme buňku podbarvit. Ukážeme si to v následujícím příkladu.

Zadání: Změňte barvu pozadí pátého řádku, až na buňku bez výplně ve druhém, třetím a šestém sloupci.

Změna barvy pozadí řádku pomocí makra v Excelu

Budeme pracovat s pátým řádkem Rows(5) a jeho výplní Interior. Pro vybarvení použijeme vlastnost ColorIndex. První řádek kódu změní pozadí celého řádku a další pak zruší výplň ve druhém, třetím a šestém sloupci.

Při rušení výplně chceme pracovat s konkrétní buňkou, tedy použijeme vlastnost (a zároveň objekt) Cells. Objekt Rows(5) říká, že budeme pracovat s pátým řádkem. Za tečkou je pak buňka vztažena k tomuto pátému řádku. Proto píšeme Cells(1, 2), což znamená v prvním řádku vůči nadřazené oblasti a druhém sloupci, tedy v buňce B5. Pokud není uveden nadřazený objekt, je pravda, že buňka B5 je Cells(5, 2), jak je uvedeno v předchozí části textu. Ale pozor, při uvedení nadřazeného objektu se vše vztahuje právě k němu.

Sub format_radek_bunka()
    Rows(5).Interior.ColorIndex = 3
    Rows(5).Cells(1, 2).Interior.ColorIndex = xlNone
    Rows(5).Cells(1, 3).Interior.ColorIndex = xlNone
    Rows(5).Cells(1, 6).Interior.ColorIndex = xlNone
End Sub

Objekt Columns - sloupec

Tento objekt lze využít pro určení jednoho sloupce. Číslo sloupce uvádíme v parametru.

Zadání: Změňte barvu pozadí celého prvního sloupce.

Řešení bylo vysvětleno výše. Jen protože pracujeme s prvním sloupcem, uvádíme Columns(1) a je použit zápis vbBarva, v tomto případě vbBlack:

Sub format_sloupec()
    Columns(1).Interior.Color = vbBlack 'RGB(0, 0, 0)
End Sub

Zadání: Změňte barvu pozadí celého sloupce určeného aktivní buňkou. Nebudeme pracovat se sloupcem 1, ale se sloupcem v němž je aktivní buňka. Jak už víme, ActiveCell.Column vrací číslo sloupce aktivní buňky:

Sub format_sloupec_aktivni()
    Columns(ActiveCell.Column).Interior.Color = vbBlack 'RGB(0, 0, 0)
End Sub

V příští lekci, , se společně podíváme na objekt Range, pomocí něhož určujeme oblast buněk.


 

Stáhnout

Staženo 86x (20.36 kB)

 

 

Článek pro vás napsala Lenka
Avatar
Jak se ti líbí článek?
3 hlasů
Autorka je absolventkou FI MU. Má dlouholetou pedagogickou praxi. Vyučovala maturitní obor IT, zejména Programování a Databázové systémy.
Předchozí článek
Klasické Hello a úvod do OOP pro makra
Všechny články v sekci
Makra v Microsoft Office
Aktivity (3)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!