Access

  MS Access 2010+ i Visual Basic for Applications VBA 7.0



• Zasięg i widzialność zmiennej.

Zasięg odnosi się do dostępności zmiennych, stałych lub procedur dla innej procedury. Występują trzy poziomy zasięgów:
• poziom procedury,
• prywatny poziom modułu,
• publiczny poziom modułu,
 
• zmienna
Opatrzone nazwą miejsce w pamięci do przechowywania danych, które mogą ulegać modyfikacjom w trakcie wykonywania programu. Każda zmienna zaopatrzona jest w unikatową nazwę, która identyfikuje ją w obrębie danego zakresu. Typ danych może być określony lub nie. Nazwy zmiennych muszą zaczynać się literą, muszą być unikatowe w obrębie swego zakresu, nie mogą być dłuższe niż 255 znaków i nie mogą zawierać kropki ani znaku deklarującego typ.
• stała
Element o nadanej nazwie, który zachowuje stałą wartość przez cały czas działania programu. Stała może być ciągiem znaków lub literałem numerycznym, inną stałą lub dowolną kombinacją zawierającą operatory arytmetyczne i logiczne, z wyjątkiem operatora Is oraz operatora potęgowania. Każda aplikacja główna może definiować własny zestaw stałych. Dodatkowe stałe mogą być definiowane przez użytkownika za pomocą instrukcji Const. Stałych można użyć w dowolnym miejscu kodu programu zamiast ich rzeczywistych wartości.
• procedura
Opatrzona nazwą sekwencja instrukcji wykonywanych jako jeden blok. Przykładami procedur są Function, PropertySub. Nazwa procedury jest zawsze definiowana na poziomie modułu. W procedurze musi zawierać się cały wykonywalny kod programu. Procedury nie mogą być zagnieżdżone w innych procedurach.

Zakres zmiennej jest określany podczas jej deklarowania. Dobrą praktyką jest jawne deklarowanie wszystkich zmiennych, w celu uniknięcia błędów konfliktów nazw pomiędzy zmiennymi w różnych zasięgach.

• 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.