Nazwa kodowa arkusza

Nazwa kodowa arkusza to ta nazwa arkusza widoczna w edytorze VBA (Alt+F11).

kliknij, aby powiększyć

W nawiasie, po prawej stronie nazwy kodowej znajduje się nazwa arkusza widoczna w Excelu. 

Standardowo, nazwa kodowa każdego arkusza w nowym skoroszycie jet zawsze taka sama, jak jego nazwa w Excelu. Zmiana nazwy arkusza nie ma jednak wpływu na zmianę jego nazwy kodowej.

Nazwę kodową arkusza można też zmienić. Wystarczy zaznaczyć jego nazwę i nacisnąć przycisk F4, aby pokazało się okno właściwości modułu. 


Chcąc zmienić nazwę  kodową arkusza wpisujemy nową nazwę w opcji  Name
Efekt końcowy wygląda tak:

Nazwa kodowa arkusza nie może zawierać żadnych znaków specjalnych, nie może też mieć spacji. W ten sam sposób mnożna też zmieniać nazwy kodowe modułów ogólnych. 

W kodzie VBA nazwa kodowa arkusza to właściwość CodeName obiektu Worksheet.  

Public Sub Nazwy()
Dim NazwaArkusza As String
Dim NazwaKodowaArkusza As String
NazwaArkusza = ActiveSheet.Name ’nazwa arkusza
NazwaKodowaArkusza = ActiveSheet.CodeName ’nazwa kodowa arkusza
End Sub

Ja w swoich projektach często stosuję nazwy kodowe arkuszy. W ten sposób kod jest odporny na wszelkie zmiany nazw w oknie Excela – użytkownicy często lubią to robić. 

Uwaga: zdarzyło mi się kiedyś pracować nad projektem dla klienta pracującego na wersji angielskiej Excela i w pewnym momencie zaczęły pojawiać się dziwne błędy. Okazało się, że Excel sam zaczął zmieniać nazwy kodowe arkuszy (te standardowe, wstawiane automatycznie). W moim edytorze był Arkusz1, Arkusz2, Arkusz3 – u klienta natomiast Sheet1, Sheet2, Sheet3 i edytor VBA nie znajdował używanych przeze nazw kodowych. Rozwiązaniem okazała się symulowana zmiana nazwy kodowej – wchodziłam we właściwości, zmieniałam nazwę kodową i od razu wracałam do tej, która była wcześniej. Pomogło. Nie wiem, z czego to wynikało, a całkiem często zdarza mi się tworzyć aplikacje dla klientów korzystających czy to z wersji angielskiej czy niemieckiej.   Na wszelki wypadek jednak od tej pory zawsze zmieniam nazwy kodowe. 
Generalnie zawsze zmieniam nazwy kodowe modułów ogólnych, szczególnie wtedy, gdy kod aplikacji Excela jest rozbudowany i modułów jest więcej. 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Stałe i zmienne publiczne VBA

W kodzie VBA, wszystkie stałe i zmienne zadeklarowane w procedurze wartości stałe i zmienne są widoczne tylko w tej procedurze. 
W modułach edytora VBA można jednak zadeklarować także zmienne i stałe publiczne. Wpisane w jednym z modułów, są widoczne w każdym module, w różnych procedurach. 

Deklarujemy je zawsze na początku modułu:

kliknij, aby powiększyć

W tym przypadku – w module jest zadeklarowana stała o nazwie MojaStala o wartości 5 oraz zmienna typu Single  o nazwie MojaZmienna

MojaStala jest do wykorzystania od razu w każdej z procedur i funkcji, natomiast do zmiennej MojaZmienna trzeba wpierw w dowolnej procedurze przypisać wartość i od tej pory można ją stosować w różnych miejscach kodu VBA, także zmieniając jej wartość. 

Czy warto je stosować? Ja często korzystam ze zmiennych publicznych (ze stałych raczej rzadko) 
Na przykład:

Option Explicit
Public OdczytPlik As Workbook
Public OdczytArkusz As Worksheet


Public Sub WybierzPlik()
Set OdczytPlik = Workbooks.Open(NazwaPliku)
Set OdczytArkusz = OdczytPlik.Worksheets(1)
End Sub

Tego typu procedury często wykorzystuję w swoich projektach, w których są pobierane dane z innego pliku. Raz przypisane zmienne, wykorzystywane są potem w różnych procedurach czy różnych modułach. Polecam takie rozwiązanie. Pozwala to przede wszystkim na podzielenie całego kodu na mniejsze procedury i/lub funkcje -kod staje się bardziej czytelny i uporządkowany. 

Polecam. 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Moduły w skoroszycie Excela

Każdy skoroszyt Excela ma swoje widoczne w edytorze VBA moduły. Standardowo są to:

    • moduł skoroszytu

    • moduły arkuszy

      każdy arkuszy ma swój oddzielny, przypisany do niego moduł.

Oprócz tego, w skoroszycie można wstawić moduły ogólne. Robimy to w edytorze VBA. Wybieramy w menu Insert:

a następnie Module

W ten sam sposób można wstawić również UserForm czyli własny formularz oraz Class Module czyli moduł klasy.

Moduł skoroszytu oraz moduły arkuszy i formularzy mają charakter prywatny, moduł ogólny – domyślnie publiczny. Oznacza to, że jeżeli wstawimy kod np.własnej funkcji do modułu prywatnego – będzie on widoczny tylko w VBA. Jeżeli sama funkcja będzie typu Private – można się do niej odwoływać tylko z tego samego modułu. Funkcje typu Public – są widoczne również z innych modułów, ale nie można ich zastosować w arkuszu. Funkcje publiczne, w module publicznym można wstawiać również w komórkach Excela wybierając z grupy funkcji Zdefiniowanych przez użytkownika:


Kurs Excel programowanie w VBA