Zmienne globalne VBA

Niektóre funkcje są zdefiniowane wewnątrz funkcji i są używane w ramach funkcji, a niektóre zmienne są definiowane poza funkcjami i są używane przez wszystkie funkcje, a takie zmienne są używane jako zmienne globalne, na przykład zmienne zadeklarowane w ramach funkcji podrzędnej to znane jako zmienne globalne.

Zmienna globalna w Excel VBA

Zadeklarowanie zmiennej wydaje się dość proste, ale aby mieć dobre ręce, musimy zrozumieć zakres tych zmiennych. Często za każdym razem deklarujemy zmienne dla każdego makra wewnątrz procedury podrzędnej. Ale deklarując jedną zmienną, możemy jej użyć we wszystkich makrach w tym samym module, a także w innych modułach bieżącego projektu VBA. W tym artykule pokażemy, jak zadeklarować zmienne globalne w Excel VBA.

Czym są zmienne globalne w Excel VBA?

Zmienne globalne VBA to zmienne deklarowane przed uruchomieniem dowolnego makra w module. Gdy zmienne są zadeklarowane przy użyciu „Publiczne” lub „Globalne”, stają się „Zmienna globalna”.

Zmienne procedury podrzędnej nie mogą być używane w żadnym miejscu

Zwykle deklarujemy zmienną wewnątrz podprogramu w vba, używając słowa „Dim”.

Spójrz na powyższy obrazek Zadeklarowałem zmienną „k” jako liczbę całkowitą wewnątrz procedury podrzędnej Global_Example1.

Jeśli użyjemy tej zmiennej w ramach tej procedury Sub w dowolnym momencie. Jednak nie mogę użyć tej zmiennej w innej procedurze podrzędnej ani w tym samym module klasy w VBA, ani w innym module.

Jak pokazano na powyższym obrazku, zmienna „k”, która jest zadeklarowana w podprocedurze Global_Example1, nie może być używana w procedurze Sub Global_Example2.

Podobnie, zmiennej „j” zadeklarowanej w podprocedurze Global_Example2 nie można użyć w procedurze Sub Global_Example1, mimo że obie podprocedury znajdują się w tym samym module.

Jak zadeklarować zmienną globalną w VBA?

Poniżej przedstawiono sposoby deklarowania zmiennej globalnej w programie Excel VBA.

# 1 - Zmienne modułu mogą być używane w dowolnej podprocedurze w tym samym module

Jak widzieliśmy, nie możemy używać zmiennych procedury podrzędnej w żadnym z modułów. Aby udostępnić je dla całej procedury Sub w tym samym module, musimy zadeklarować zmienne w górnej części modułu.

Na powyższym obrazku zadeklarowałem zmienną tylko na początku modułu. Zadeklarowałem zmienną „MyNumber” jako Integer w module 1 .

Po zadeklarowaniu zmiennej na górze modułu możemy użyć tej samej zmiennej dla wszystkich innych procedur Sub w tym samym module, w tym przypadku możemy użyć zmiennej „MyNumber” dla wszystkich procedur Sub w module 1.

Problem w tym, że nie możemy ich użyć w żadnym innym module. W takim przypadku zmienna „MyNumber” zadeklarowana w module 1 nie może być użyta w module 2.

 # 2 - Zmienne globalne mogą być używane w dowolnej podprocedurze, a także w dowolnym module

Teraz widzieliśmy dwa rodzaje deklaracji zmiennych i ich zakres podczas używania. Interesujące jest to, że możemy zadeklarować zmienną w dowolnym z modułów i używać jej dla wszystkich procedur Sub we wszystkich modułach tego samego projektu VBA.

Aby zmienna była dostępna dla wszystkich procedur Sub we wszystkich modułach, musimy zadeklarować zmienną na górze modułu nie używając słowa „Dim”, ale używając słowa „Public” lub „Global”.

Na powyższym obrazku widać, że użyłem słowa „Publiczne” do zadeklarowania zmiennej zamiast naszego weterana słowa „Dim”.

Na powyższym zrzucie ekranu zadeklarowałem zmienną w Module 1. Mam jeszcze dwa moduły o nazwach Module 2 i Module 3.

Ponieważ zadeklarowałem zmienną za pomocą słowa „Publiczne” u góry modułu, teraz mogę uzyskać dostęp do tych zmiennych w dowolnej procedurze podrzędnej w dowolnym module tego samego skoroszytu.

Nie tylko „Publiczne”, ale możemy również użyć słowa „Globalny” do zadeklarowania zmiennej.

Global & Public to dwa słowa kluczowe do zadeklarowania zmiennej i udostępnienia ich w różnych modułach w VBA.

Rzeczy do zapamiętania

  • Po uruchomieniu makra programu Excel ze zmienną globalną wartość zmiennej jest taka sama we wszystkich procedurach Sub.
  • Lepiej jest utrzymywać określony moduł, aby deklarować zmienne globalne w VBA i mieć wszystkie zmienne w jednym module.
  • Jedynym sposobem, w jaki możemy zresetować wartość zmiennej, jest zresetowanie kodu makra poprzez naciśnięcie przycisku stop.