• Definiowanie zasięgu poziomu procedury
Zmienna lub stała zdefiniowana wewnątrz procedury nie jest widziana poza tą procedurą. Jedynie procedura zawierająca deklarację zmiennej może korzystać z tej zmiennej. W poniższym przykładzie pierwsza procedura wyświetla okno komunikatu zawierające przypisany ciąg znaków. Jeżeli wyłączymy dyrektywę Option Explicit w sekcji deklaracji modułu, celem uniknięcia błędu kompilacji ze względu na niezadeklerowaną zmienną strKomunikat. Druga procedura wyświetla puste okno komunikatu, gdyż zmienna strKomunikat jest lokalna w pierwszej procedurze.
Option Compare Database ' Option Explicit Private Sub ZmiennaLokalna() Dim strKomunikat As String strKomunikat = "Tekst przypisany do tej zmiennej jest widoczny tylko w tej procedurze" MsgBox strKomunikat End Sub Private Sub ZmiennaPozaZasięgiem() MsgBox strKomunikat End Sub
• Definiowanie zasięgu prywatnego na poziomie modułu
Zmienne i stałe na poziomie modułu można definiować w sekcji deklaracji modułu. Zmienne na poziomie modułu mogą być publiczne
lub prywatne. Zmienne publiczne są dostępne we wszystkich procedurach wszystkich modułów projektu. Zmienne prywatne są
dostępne tylko dla procedur w tym module. Domyślnie, zmienne zadeklarowane za pomocą instrukcji Dim w sekcji
deklaracji modułu są traktowane jako prywatne. Jeśli jednak zmienna zostanie poprzedzona słowem kluczowym Private,
wówczas jej zasięg w kodzie programu staje się bardziej oczywisty.
W poniższym przykładzie zmienna znakowa strKomunikat jest dostępna we wszystkich procedurach zdefiniowanych w module.
Wywołanie drugiej procedury powoduje wyświetlenie w oknie komunikatu przypisany ciąg znaków zmiennej znakowej strKomunikat.
Option Compare Database Option Explicit ' Poniższa deklaracja znajduje się w sekcji deklaracji modułu. Private strKomunikat As String Sub InicjujZmiennaPrywatna() strKomunikat = "Tekst przypisany do tej zmiennej jest widoczny tylko w tym module" End Sub Sub UżyjZmiennaPrywatna() Call InicjujZmiennaPrywatna MsgBox strKomunikat End Sub
Uwaga! Procedury publiczne w module standardowym
lub module klasy
są
dostępne w każdym projekcie wskazującym
. Aby ograniczyć zasięg wszystkich procedur w module
do bieżącego projektu, należy w sekcji deklaracji modułu umieścić instrukcję Option Private Module. Zmienne i procedury
publiczne pozostają dostępne dla innych procedur w bieżącym projekcie, natomiast nie są dostępne dla projektów odwołujących się
do tego projektu.
- • moduł standardowy
- Moduł zawierający jedynie deklaracje i definicje procedur, typów i danych. Domyślnie deklaracje i definicje na poziomie modułu standardowego mają status Public. Moduł standardowy w starszych wersjach języka Visual Basic nazywano modułem kodu programu.
- • moduł klasy
- Moduł zawierający definicję klasy, w tym definicje jej właściwości i metod.
- • projekt wskazujący
- Bieżący projekt. Sposób tworzenia łączy do projektu zależy od aplikacji głównej. Na przykład, aby bezpośrednio wskazać projekt programu Microsoft Excel (czyli odwołać się do niego), należy wybrać projekt z okna dialogowego Odwołania (menu Narzędzia). Zmienne typu Public w projekcie wskazywanym bezpośrednio są widoczne dla projektu wskazującego bezpośrednio, lecz zmienne typu Public z projektu wskazującego bezpośrednio nie są widoczne dla projektu wskazywanego bezpośrednio.
• Definiowanie zasięgu publicznego na poziomie modułu
Jeśli zmienna na poziomie modułu zostanie zadeklarowana jako publiczna, jest ona dostępna we wszystkich procedurach projektu. W poniższym przykładzie zmienna znakowa strKomunikat może być użyta w każdej procedurze każdego modułu projektu.
Option Compare Database Option Explicit ' Poniższa deklaracja znajduje się w sekcji deklaracji modułu. Public strKomunikat As String
Domyślnie, wszystkie procedury są publiczne, z wyjątkiem procedur obsługi zdarzeń. Kiedy w języku Visual Basic tworzona
jest procedura obsługi zdarzenia, przed deklaracją procedury umieszczane jest automatycznie słowo kluczowe
Private.
W przypadku wszystkich innych procedur, jeżeli procedura nie ma być publiczna, należy jawnie zadeklarować ją
ze słowem kluczowym Private.
Procedury, zmienne i stałe publiczne zdefiniowane w modułach standardowych lub modułach klas mogą być wykorzystywane przez projekty wskazujące. W pierwszym jednak rzędzie należy ustawić odwołanie do projektu, w którym są one zdefiniowane.
Procedury, zmienne i stałe publiczne zdefiniowane w innych modułach niż moduły standardowe lub moduły klas, to jest w takich
jak moduły formularza
lub moduły raportów
, nie są dostępne dla projektów wskazujących, gdyż moduły te są prywatne w stosunku
do projektu, w którym występują.
- • słowo kluczowe
- Słowo lub symbol rozpoznawany jako część języka programowania Visual Basic, na przykład instrukcja, nazwa funkcji lub operator.
• moduł formularza (raportu)
- Moduł formularza (raportu) widoczny jest w oknie kodu VBA w trybie projektu formularza (raportu). Zawiera deklaracje stałych, zmiennych i procedur zewnętrznych na poziomie formularza (raportu) oraz zdarzenia i procedury ogólne.