dnes je 4.10.2024

Input:

Způsoby záznamu maker v Excelu

21.2.2007, , Zdroj: Verlag Dashöfer

Tento článek bychom mohli také nazvat „Záludnosti při záznamu maker, aneb na co si musíme dát pozor".

Účelem článku je seznámit se s různými způsoby záznamu maker, přesněji řečeno poznat, jak způsob záznamu ovlivní práci makra při jeho spuštění.

Absolutní a relativní odkaz

S rozlišením absolutního a relativního odkazu jsme se již setkali v kapitole „Absolutně a relativně odkazované makro". Nyní si tuto problematiku probereme do hloubky včetně rozboru kódu, který při záznamu makra vznikne.

Otevřeme si sešit 4_3_5_ruzne_zaznamy.xls a zobrazíme první list Tvorba makra. Nejprve vyzkoušíme rozdíl mezi oběma odkazy na nejjednodušší možné akci: práci s jedinou buňkou.

Postavíme kurzor do buňky B2 a příkazem Nástroje - Makro - Záznam nového makra spustíme záznam prvního makra (nazveme je „Absolutní1"). V zobrazeném panelu zkontrolujeme, že je relativní odkaz vypnutý (druhé tlačítko v panelu není zapnuté), do buňky B2 zapíšeme nějaký údaj a záznam makra ukončíme.

Vymažeme obsah buňky B2 a záznam stejné akce makrem Relativní1 provedeme ještě jednou s tím rozdílem, že nyní zapneme relativní záznam.

Nyní obě makra vyzkoušíme. Postavíme kurzor do jakékoliv buňky kromě B2 a spustíme nejprve makro Relativní1 s relativním odkazem. Údaj se zapíše do buňky, na které stojí kurzor. Údaj vymažeme a spustíme makro Absolutní1. Zjistíme, že obě makra provedla zcela totéž, tedy ani makro s absolutním odkazem nezapisuje do buňky B2, nýbrž vždy do aktivní buňky.

Krok za krokemNyní zkusíme zaznamenat další dvě makra, ve kterých ale budeme měnit polohu kurzoru. Náš postup bude následující:

  1. postavíme kurzor do buňky B3,

  2. spustíme záznam nového makra Absolutní2,

  3. na panelu pro záznam vypneme relativní odkaz,

  4. do buňky B3 zapíšeme jeden údaj,

  5. přejdeme o řádek výš do buňky B2,

  6. zapíšeme druhý údaj,

  7. ukončíme záznam.

Nyní vymažeme buňky B2 a B3 a zcela stejným způsobem v těchto buňkách vytvoříme makro Relativní2 s jediným rozdílem: na panelu pro záznam zapneme opět relativní odkaz.

Vymažeme buňky B2 a B3, postavíme kurzor např. do buňky D4 a spustíme nejprve makro Relativní2. Údaje se zapíší do buněk D4 a D3.

UpozorněníUpozornění : Při záznamu několika maker po sobě si Excel pamatuje zapnutý nebo vypnutý relativní odkaz ze záznamu předešlého makra.

Opět vymažeme obě buňky, postavíme kurzor do buňky D4 a spustíme makro Absolutní2. První údaj se zapíše do buňky D4, ale druhý údaj do buňky B2.

Vidíme tedy, že rozdíl mezi absolutním a relativním odkazem se projevuje až při změně aktivní buňky, tedy při pohybu kurzoru po listu. V sešitu 4_3_5_ruzne_zaznamy.xls nalezneme dvě ukázková makra: Zápis_absolutně a Zápis_relativně, která si můžeme spustit nejlépe na listu Absolutní a relativní záznam. Kódy ukázkových maker v tomto sešitu nalezneme v modulu „Makra".

Obě makra provádí obdobné akce, jaké jsme si do sešitu zaznamenali v makrech Absolutní2 a Relativní2.

Rozeberme si nyní rozdíl v obou makrech podle kódu. Ve Visual Basic je makro s absolutním odkazem zaznamenáno s tímto kódem 1 :

Sub Zápis_absolutně()

  ActiveCell = 10

  Range("B2").Select

  ActiveCell = 20

End Sub

Makro s relativním odkazem spouští tento kód:

Sub Zápis_relativně()

  ActiveCell = 10

  ActiveCell.Offset(-1, 0).Select

  ActiveCell = 20

End Sub

Porovnáním obou kódů vidíme, že se obě makra liší ve druhém řádku, což je právě posuv kurzoru z buňky B3 na buňku B2 (v těchto buňkách byla obě makra zaznamenávána). Zatímco při použití absolutního odkazu se zřejmě jedná o příkaz typu „postav kurzor na buňku B2", u relativního záznamu druhá řádka znamená „postav kurzor do buňky ve stejném sloupci a o jednu řádku výše, než je aktivní buňka".

UpozorněníMůžeme tedy uzavřít: makra zaznamenaná s absolutním odkazem se liší v příkazech, zaznamenávajících výběr buněk. Jestli použijeme klávesové zkratky nebo na zvolenou buňku klepneme myší, nehraje žádnou roli.

Zbývá nám vyřešit ještě poslední problém: chceme zaznamenat makro, které bude vždy zapisovat do buněk B3 a B2, bez ohledu na pozici kurzoru při spuštění makra. Protože se rozdíl mezi absolutním a relativním záznamem projeví při pohybu kurzoru, měli bychom tedy jako první akci provést přesun na buňku, odkud má makro začít svou činnost.

Toto makro je v našem sešitu vytvořeno pod názvem Zápis_absolutně_start_na_B2. Pokud je spustíme, bude zapisovat vždy do buněk B3 a B2, bez ohledu na pozici kurzoru. Z kódu makra vidíme jasně rozdíl proti makru Zápis_absolutně :

Sub Zápis_absolutně_start_na_B2()

  Range("B3").Select

  ActiveCell = 10

  Range("B2").Select

  ActiveCell = 20

End Sub

V makru je navíc první řádek kódu, který zřejmě obstará náš skok na buňku B3.

UpozorněníUpozornění:

Nahrávám...
Nahrávám...