Články > Kedy použiť kódový názov listu

Jedinečný, teda unikátny

V článku o zvýraznení aktívneho riadka som spomínal, že odporúčam pri používaní makra v Exceli premenovať kódové názvy jednotlivých hárkov.

Hneď na začiatku však poviem, že to nie je nutné vždy. Napríklad, nemá to význam, ak so svojimi dokumentami pracujete iba vy a viete, ktorý je na čo. Alebo nepoužívate makrá VBA, v ktorých potrebujete bezpečne rozlišovať medzi jednotlivými hárkami pri viacerých súčasne otvorených dokumentoch, ani nevykonávate vzájomné operácie medzi hárkami.

NEFUNGUJÚCE MAKRO - CHYBA 9

A kedy to má význam? Napríklad vtedy, ak vytvorený zošit Excelu budú používať rôzni užívatelia. Môže sa totiž ľahko stať, že im nebudú vyhovovať názvy listov. Tak si ich premenujú. A problém je na svete. Makro fungovať nebude a vyhodí chybu Subscript out of range (kód chyby 9). Ľudsky povedané, objekt, s ktorým chcete pracovať (bunka, pole, oblasť, list...) je pre Excel akoby mimo dosah. Je neviditeľný, nevie ho nájsť.

chyba VBA Subscript out of range

Čo s tým? Otvorte editor jazyka VBA - Visual Basic for Application. Označte v okne Project Explorer list, ktorý chcete premenovať a v okne Properties zmeňte názov v položke (Name). V hornom okne so zoznamom objektov má označený list názov Data pre Graf Sample. Ten je normálne viditeľný v ušku hárka. Avšak kódový názov je shData (červený rámik). Ten je viditeľný iba v editore VBA.

okno properties vba

Vo vzorovom zošite je jednoduché makro, ktoré má zobraziť list s predajom ovocia. Ten mal pôvodny názov Predaj ovocia. Ale makro sa zaseklo.

obrázok chyby kódu vba

A kde je chyba? Iný užívateľ premenoval list Predaj ovocia na Moje ovocie klasicky v ušku hárka. Keďže makro chce zobraziť list s názvom Predaj ovocia, tento list logicky nenájde. Zasekne sa na riadku s chybným názvom listu a vyhodí spomínanú chybu Subscript out of range.

obrázok uška hárkov

V tomto prípade by správne fungoval zakomentovaný príkaz Hárok1.Activate (podčiarknutý červenou). Pretože takto chceme zobraziť list s kódovým názvom Hárok1. A teda nezáleží aký viditeľný názov má daný list.

V priloženom zošite si môžete vyskúšať logiku tohto makra aj funkčnosť kódového názvu nezávisle od viditeľného názvu listu.