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”.
![](https://cdn.know-base.net/3187987/vba_global_variables_how_to_declare_global_variable_in_vba__2.png.webp)
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.
![](https://cdn.know-base.net/3187987/vba_global_variables_how_to_declare_global_variable_in_vba__3.png.webp)
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.
![](https://cdn.know-base.net/3187987/vba_global_variables_how_to_declare_global_variable_in_vba__4.png.webp)
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.
![](https://cdn.know-base.net/3187987/vba_global_variables_how_to_declare_global_variable_in_vba__5.png.webp)
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.
![](https://cdn.know-base.net/3187987/vba_global_variables_how_to_declare_global_variable_in_vba__6.png.webp)
# 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”.
![](https://cdn.know-base.net/3187987/vba_global_variables_how_to_declare_global_variable_in_vba__7.png.webp)
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.
![](https://cdn.know-base.net/3187987/vba_global_variables_how_to_declare_global_variable_in_vba__8.png.webp)
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.