• Instrukcje deklaracji.
Instrukcje deklaracji służą do nadawania nazw i definiowania procedur, funkcji, zmiennych, tablic i stałych. Kiedy deklarowana
jest procedura, zmienna lub stała, definiowany jest również jej zakres zależnie od miejsca wystąpienia deklaracji i rodzaju
słów kluczowych zastosowanych w deklaracji.
Poniższy przykład zawiera trzy deklaracje:
Sub MojaProcedura()
Const MojaStala As String = "Mój tekst"
Dim MojaZmienna As Long
' Dalsze instrukcje
End Sub
• Instrukcja Sub
Instrukcja Sub (wraz z odpowiadającą jej instrukcją End Sub) deklaruje procedurę o nazwie MojaProcedura. Gdy procedura MojaProcedura jest wywoływana lub uruchamiana, wykonywane są wszystkie instrukcje umieszczone między instrukcjami Sub i End Sub.
Procedura Sub jest ciągiem instrukcji języka Visual Basic zawartych między instrukcjami Sub i End Sub. Instrukcje procedury tego typu wykonują akcje, lecz nie zwracają wartości. Procedura Sub może pobierać argumenty, takie jak stałe, zmienne i wyrażenia, które są przekazywane przez procedurę wywołującą. Jeśli procedura Sub nie ma argumentów, instrukcja Sub musi zawierać pustą parę nawiasów.
• Instrukcja Const
Instrukcja Const deklaruje stałą MojaStala, o określonym typie danych String i wartości "Mój tekst".
Poprzez zadeklarowanie stałej możliwe jest nadanie nazwie stałej sensownej nazwy. Do deklaracji stałej i nadania jej wartości służy instrukcja Const. Po zadeklarowaniu stałej nie jest możliwe jej modyfikowanie lub przypisywanie do niej innej wartości.
Stałą można zadeklarować wewnątrz procedury lub na początku modułu, w sekcji deklaracji. Stałe zadeklarowane na poziomie modułu są domyślnie prywatne. Aby zadeklarować publiczną stałą na poziomie modułu, należy poprzedzić instrukcję Const słowem kluczowym Public. Możliwe jest także jawne zadeklarowanie stałej prywatnej, przez poprzedzenie instrukcji Const słowem kluczowym Private, co ułatwia czytanie i interpretowanie kodu programu.
• Instrukcja Dim
Instrukcja Dim deklaruje zmienną MojaZmienna o określonym typie danych Long.
Instrukcje Dim są jednym z typów instrukcji stosowanych do deklarowania zmiennych. Inne słowa kluczowe stosowane w takich deklaracjach to ReDim, Static, Public, Private i Const.
Zmienna może być także zadeklarowana jako obiekt dowolnego typu, udostępnianego przez wykorzystywaną aplikację.
Do deklarowania zmiennej zazwyczaj stosowana jest instrukcja Dim. Instrukcja deklaracji może być umieszczona
wewnątrz procedury wówczas zostanie utworzona zmienna na poziomie procedury. Jeżeli natomiast deklaracja zostanie umieszczona
na początku modułu, w sekcji deklaracji, utworzona będzie zmienna na poziomie modułu.
Poniższy przykład tworzy zmienną strNazwa i określa typ danych String.
Dim strMojaZmienna As String
Jeśli instrukcja ta występuje wewnątrz procedury, zmienna strMojaZmienna może być używana tylko w tej procedurze.
Jeśli natomiast instrukcja zostanie umieszczona w sekcji deklaracji modułu, zmienna strMojaZmienna
będzie dostępna dla wszystkich procedur wewnątrz modułu, lecz nie mogą korzystać z niej procedury w innych modułach projektu.
Aby udostępnić tę zmienną wszystkim modułom projektu, należy zadeklarować ją w module standardowym
i poprzedzić instrukcją Public:
Public Dim strMojaZmienna As String
Zmienne mogą być deklarowane w jednym z następujących typów danych: Boolean, Byte, Integer, Long, Currency, Single, Double, Date,
String (dla ciągów o zmiennej długości), String * długość (dla ciągów o stałej długości),
Object lub Variant. Jeśli typ danych nie zostanie określony,
przyjmowany jest domyślnie typ Variant.
Począwszy od MS Aceess 2010 wraz z wprowadzeniem VBA7, pojawiły się dwa nowe typy:
LongPtr (32 i 64-bitowe środowisko VBA7) i LongLong
(wyłącznie 64-bitowe środowisko VBA7).
W jednej instrukcji można zadeklarować kilka zmiennych. Aby określić typ danych, należy dla każdej zmiennej podać określenie typu danych. W poniższej instrukcji wszystkie zmienne intX, intY i intZ są zadeklarowane jako zmienne typu Integer.
Public Dim intX As Integer, intY As Integer, intZ As Integer
W poniższej instrukcji zmienna intX i zmienna intY są zadeklarowane domyślnie jako zmienne typu Variant, gdyż nie przypisano im bezpośrednio, za pomocą słowa kluczowego As, typu zmiennej. Jedynie zmienna intZ jest typu Integer.
Uwaga. Jeśli typ danych nie zostanie określony, przyjmowany jest domyślnie typ Variant.
Public Dim intX, intY, intZ As Integer
' Zmienna intX i zmienna intY są zadeklarowane domyślnie jako zmienne typu Variant
• Instrukcja Public
Instrukcja Public może być stosowana do deklarowania zmiennych publicznych na poziomie modułu w sekcji deklaracji.
Public strMojaZmienna As String
Zmienne publiczne mogą być używane w dowolnych procedurach projektu. Jeśli zmienna publiczna jest zadeklarowana w module standardowym lub module klasy, może być także stosowana w dowolnym projekcie, który odwołuje się do projektu, w którym zadeklarowano tę zmienną publiczną.
• Instrukcja Private
Instrukcja Private może być stosowana do deklarowania zmiennych prywatnych na poziomie modułu w sekcji deklaracji.
Private strMojaZmienna As String
Zmienne prywatne mogą być używane tylko przez procedury w tym samym module.
Na poziomie modułu instrukcja Dim jest równoważna instrukcji Private.
Instrukcja Private może być stosowana w celu uzyskania bardziej czytelnego i łatwiejszego do interpretacji kodu programu.
• Instrukcja Static
Jeśli zamiast instrukcji Dim zostanie użyta instrukcja Static, zadeklarowana w ten sposób zmienna zachowuje swoją wartość między wywołaniami funkcji.
• Instrukcja Option Explicit
Zmienna w języku Visual Basic może być niejawnie zadeklarowana po prostu przez użycie jej w instrukcji podstawienia. Wszystkie
zmienne zadeklarowane niejawnie są typu Variant. Zmienne typu Variant wymagają więcej zasobów pamięci
niż większość innych zmiennych. Jeżeli zmienne deklarowane są jawnie, z określonym typem danych, aplikacja użytkownika
jest bardziej efektywna. Jawne deklarowanie wszystkich zmiennych redukuje niebezpieczeństwo wystąpienia błędów wynikających z konfliktów
nazw i pomyłek w pisowni. Jeśli niejawne deklaracje zmiennych dokonywane przez system Visual Basic są niepożądane, w module
przed wszystkimi procedurami należy umieścić instrukcję Option Explicit. Instrukcja ta nakłada wymóg, aby wszystkie
zmienne w module były jawnie deklarowane. Jeśli w module umieszczono instrukcję Option Explicit,
znalezienie przez kompilator Visual Basic w kodzie programu zmiennej, która nie została uprzednio zadeklarowana lub której nazwę
napisano błędnie, powoduje wystąpienie błędu czasu kompilacji.
W celu automatycznego włączania instrukcji Option Explicit we wszystkich nowych modułach należy ustawić odpowiednią
opcję środowiska programistycznego Visual Basic. Należy jednak zwrócić uwagę, że opcja ta nie zmienia już napisanego,
istniejącego kodu programu.
Uwaga.
Tablice o stałym rozmiarze i tablice dynamiczne wymagają jawnych deklaracji.
• Deklarowanie zmiennej obiektowej dla automatyzacji
Jeżeli jedna aplikacja jest wykorzystywana do manipulowania obiektami innej aplikacji, należy ustawić odwołanie do biblioteki typów tej innej aplikacji. Po ustawieniu odwołania można zadeklarować zmienną obiektową o typach najbardziej odpowiadających typom obiektów. Na przykład, jeśli podczas sesji z programem Microsoft Access ustawiono odwołanie do biblioteki typów programu Microsoft Excel, możliwe jest zadeklarowanie z poziomu programu Microsoft Access zmiennej typu Worksheet, aby reprezentować nią obiekt typu Worksheet programu Microsoft Excel.
Jeżeli inna aplikacja operuje na obiektach programu Microsoft Access, w większości przypadków możliwe jest deklarowanie zmiennych obiektowych o możliwie najbardziej odpowiednich typach. Można także użyć słowa kluczowego New, aby automatycznie utworzyć nowe wystąpienie obiektu. Konieczne jednak może się okazać wskazanie, że jest to obiekt programu Microsoft Access. Na przykład, deklarując zmienną obiektową służącą do reprezentowania formularza programu Microsoft Access z poziomu systemu Microsoft Visual Basic, należy rozróżnić obiekt typu Form programu Microsoft Access od obiektu typu Form języka Visual Basic. W tym celu należy w deklaracji zmiennej dołączyć nazwę biblioteki typów,] jak w poniższym przykładzie:
Dim frmMojFormularz As New Access.Form
Niektóre aplikacje nie rozpoznają poszczególnych typów danych programu Microsoft Access. Dla takich aplikacji, pomimo ustawienia odwołania
do biblioteki typów programu Microsoft Access, konieczne jest deklarowanie wszystkich zmiennych obiektowych programu Microsoft Access jako
zmiennych typu Object. Nie można też stosować słowa kluczowego New
do tworzenia nowego wystąpienia obiektu.
Poniższy przykład pokazuje, w jaki sposób należy zadeklarować zmienną reprezentującą wystąpienie obiektu programu
Microsoft Access typu Application z poziomu aplikacji, która nie rozpoznaje typów obiektowych
programu Microsoft Access. Następnie aplikacja tworzy wystąpienie obiektu typu Application.
Dim appAccess As Object
Set appAccess = CreateObject("Access.Application")
Aby określić, jaką składnię udostępnia aplikacja, należy zapoznać się z dokumentacją aplikacji.