Zmienne globalne VBA - Jak zadeklarować zmienną globalną w 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ć z nich dobre doświadczenia, musimy zrozumieć zakres tych zmiennych. Często za każdym razem deklarujemy zmienne dla każdego makra wewnątrz podprocedury. Ale deklarując jedną zmienną, możemy użyć jej we wszystkich makrach w tym samym module i 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 za pomocą słowa „Dim”.

Spójrz na powyższy obrazek. Zadeklarowałem zmienną „k” jako liczbę całkowitą w podprocedurze Global_Example1.

Załóżmy, że używamy tej zmiennej wewnątrz 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” 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 podprocedury w żadnym z modułów. Aby udostępnić je dla wszystkich procedur 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. Wyraziłem zmienną „MyNumber” jako liczbę całkowitą w module 1 .

Gdy zmienna zostanie zadeklarowana w górnej części modułu, możemy użyć tej samej zmiennej dla wszystkich innych procedur Sub w tym samym module. W takim 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 zostać 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. Ekscytujące jest to, że możemy zadeklarować zmienną w dowolnym z modułów i używać jej we wszystkich procedurach 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ą w górnej części modułu nie używając słowa „Dim”, ale używając nazwy „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” w górnej części 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 z wartością zmiennej globalnej, zmienna 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.

Interesujące artykuły...