Używanie nazw kodowych arkuszy
Czasami spotykamy się z sytuacją, kiedy musimy utworzyć makro działające nawet wówczas, gdy zmienią się nazwy arkuszy, do których się odwołujemy.
Jeśli rejestrujemy makro odwołujące się do jakiegoś skoroszytu, przestanie ono działać jeśli nazwa tego skoroszytu ulegnie zmianie. Dzieje się tak dlatego, że rejestrowane makro odwołuje się do skoroszytów poprzez nazwę arkusza - za pomocą polecenia Sheets("NazwaArkusza").Select. A przecież nazwa arkusza może być w dowolnym momencie zmieniona przez użytkownika bez udziału VBA.
Aby temu zaradzić mamy dwie możliwości. Pierwszy wariant to użycie numerów indeksów arkuszy. Numer indeksu arkusza to nic innego jak numer pozycji (licząc od lewej) arkusza w skoroszycie. Arkusz umieszczony jako pierwszy od lewej ma indeks 1, kolejny (następny leżący po prawej) 2 itd. Dzięki VBA możemy wskazać dowolny arkusz za pomocą jego indeksu, oto przykład:
Sheets(3).Select
Niestety to rozwiązanie ma wadę: kolejność arkuszy w skoroszycie też może ulec zmianie (bez konieczności użycia VBA) - poprzez zmianę pozycji arkuszy, usunięcie arkusza etc.
Zamiast tego możemy użyć tzw. nazw kodowych. Każdy arkusz znajdujący się w skoroszycie posiada swoją unikatową nazwę kodową, która nie ulegnie zmianie ani przy przesuwaniu arkuszy, usuwaniu czy zmianie ich nazw przez użytkownika. Nazwę kodową możemy sprawdzić tylko w edytorze Visual Basic (Alt+F11) w oknie Project. W polskiej wersji Excela noszą one nazwy takie jak: Arkusz1, Arkusz2 itd., gdzie za nazwą kodową w nawiasach okrągłych jest podana nazwa "zwykła", np. Arkusz1(Budżet). W tym przykładzie Arkusz1 jest nazwą kodową, a (Budżet) jest nazwą arkusza (zwykłą).

Odwołanie się do arkusza za pomocą jego nazwy kodowej jest bardzo proste:
Arkusz1.Select
Cokolwiek teraz użytkownik zrobi z arkuszami lub ich strukturą nie wpłynie to już negatywnie na działanie naszego makra.
Uwaga:
Nie można niestety posługiwać się nazwami kodowymi arkuszy, które znajdują się w innym skoroszycie niż skoroszyt domowy naszego makra.
