Zmienna globalna VBA

Spisie treści

W tym samouczku omówimy zmienne globalne. Zmienna w VBA może mieć inny zakres. Zakres zmiennej opiera się na jej pozycji w kodzie i sposobie jej zadeklarowania. Zakres zmiennej wskazuje na jej widoczność i gdzie można jej użyć.

Zmienna na poziomie procedury

Zmiennych tych można używać tylko w ramach procedury lub funkcji Sub, w której są zadeklarowane. Należy zadeklarować zmienną poziomu procedury za pomocą słowa kluczowego Dim. Dodatkowo musisz umieścić go w ramach Procedury Podrzędnej lub Funkcji będącej przedmiotem zainteresowania. Sposób deklarowania zmiennej na poziomie procedury pokazano w poniższym kodzie:

1234567 Deklaracja podrzędnaAProcedureLevelVariable()Dim someNumber As IntegerjakaśLiczba = 5MsgBox jakiśNumerNapis końcowy

Wynik to:

Możesz użyć tej zmiennej tylko w ramach procedury Sub o nazwie DeclaringAProcedureLevelVariable(). Ponieważ znajduje się w tej procedurze Sub i użyliśmy słowa kluczowego Dim. Jeśli wywołasz go z innej procedury podrzędnej, otrzymasz następujący błąd:

Zmienna poziomu modułu

Możesz użyć zmiennej poziomu modułu w dowolnej procedurze podrzędnej lub funkcji w tym samym module. Musisz umieścić deklarację zmiennej na górze modułu w sekcji Deklaracje pod instrukcją Options Explicit i użyć słowa kluczowego Dim:

Kiedy uruchamiamy drugą procedurę podrzędną zamiast komunikatu o błędzie, otrzymujemy następujący wynik w komórce A1 skoroszytu:

Zmienna poziomu globalnego

Możesz użyć zmiennej globalnej w swoich modułach, funkcjach, procedurach podrzędnych i klasach. Zmienną globalną deklarujesz w sekcji Deklaracje w instrukcji Options Explicit i używając słowa kluczowego Global. Sposób deklarowania zmiennej na poziomie globalnym pokazano poniżej. Obie procedury podrzędne w Module1 mogą używać tej zmiennej.

Ponieważ ta zmienna jest zmienną na poziomie globalnym, możesz jej również użyć w Module2:

Po uruchomieniu tego kodu z Module2 otrzymasz następujący wynik:

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave