Widoczne w edytorze VBA moduły mają swoje własne, unikalne nazwy. Po dodaniu nowego modułu, przy jego zapisaniu od razu pojawia się okienko, gdzie można wpisać jego nazwę.
Tak zapisaną nazwę modułu można później zmienić. Wystarczy zaznaczyć dany moduł i nacisnąć klawisz funkcyjny F4.
W oknie właściwości widoczna jest nazwa pierwotnie zapisana (w tym przykładzie domyślna), ale można ją zmienić na inną.
W ten sposób można zmieniać tylko nazwy modułów ogólnych, nazwy modułów prywatnych poszczególnych obiektów (formularz, raport) mają stałe nazwy i nie można ich zmieniać.
W edytorze VBA każdy moduły własne obiektów ma charakter prywatny. Oznacza to, że wszystkie zapisane w nim funkcje i procedury są dostępne tylko z poziomu VBA.
Moduły ogólne są domyślnie publicznie. Zdefiniowane w nich procedury i funkcje publiczne są widoczne również z poziomu Accessa (m.in. w kreatorze wyrażeń). Funkcje i procedury prywatne mogą być wykorzystane jedynie z poziomu procedur zapisanych w tym samym module.
Np. taka funkcje w module ogólnym:
Public Function PierwszyNumer() 'funkcja publiczna
Pierwszy = DFirst(„NumerKatalogowy”, „TabelaKsiazki”, „DataP is null”) End Function
Private Function OstatniNumer() 'funkcja prywatna OstatniNumer = DLast(„NumerKatalogowy”, „TabelaKsiazki”, „DataP is null”)
End Function
W kreatorze wyrażeń wygląda to tak:
kliknij, aby powiększyć
W bazie Biblioteka, w module ModuleFunction widoczna jest tylko jedna funkcja – zdeklarowana jako Public. Prywatna funkcja OstatniNumer nie jest tu widoczna, może być wykorzystana tylko w obrębie tego samego modułu.
Przy bardziej rozbudowanych projektach i wielu procedurach w kodzie może być więcej modułów ogólnych z różnymi procedurami i funkcjami. Nie wszystkie z nich muszą być widoczne i dostępne również bezpośrednio w Accessie, czasem warto je „utajnić”. Wystarczy na początku modułu ogólnego wstawić Option Private Module
kliknij, aby powiekszyć
Od tej pory – wszystkie funkcje i procedury publiczne w takim module będą dostępne z innych modułów, ale nie w Accessie.
W praktyce zawsze tak robię, porządkując funkcje i procedury i część z nich umieszczając je modułach prywatnych, a część – publicznych. Zmieniam też nazwy modułów, żeby się nie pogubić i utrzymać porządek w kodzie.
Np. tak:
Zdarzenia formularza to makra i procedury uruchamiane automatycznie na skutek któregoś z działań tego formularza.
Procedury VBA znajdują się w module własnym formularza.
Przypisujemy je w zakładce ZdarzeniaArkusza właściwości formularza.
Do każdego zdarzenia możemy przypisać po nazwie konkretne makro zzapisane w aplikacji:
kliknij, aby powiększyć
Można też uruchomić konstruktora:
Istnieją tu 3 możliwości:
Konstruktor makr
– w nowym oknie definiujemy makro. Po zapisaniu nie jest ono widoczne w grupie makr w oknie nawigacji i nie można go wykorzystać w innych formularzach. W arkuszu właściwości będzie widoczne jako makro osadzone.
kliknij, aby powiększyć
Konstruktor wyrażeń – w nowym oknie możemy wybrać dowolną funkcję lub metodę
Konstruktor kodu – przejście do edytora VBA, do modułu formularza
Moduły VBA w aplikacji Access to obiekty VBA, w których są zapisane wszystkie procedury i funkcje stworzone w kodzie VBA.
Dwukrotne kliknięcie w moduł powoduje automatyczne przejście do okna eksploatora projektu. Oczywiście można tam wejść również poprzez przycisk w grupie opcji Makra i kod na karcie Tworzenie czy też naciśnięcie przycisków Alt+F11.
Każdy z obiektów Accessa typu formularz czy raport ma swój własny moduł, w którym są zapisywane wszystkie zdarzenia z nim związane. Oprócz tego w projekcie są moduły ogólne, do których trafiają wszystkie przekonwertowane makra. Moduły ogólne mogą być też wstawiane poprzez menu edytora VBA:
Wykorzystując kod VBA – możliwości jest już naprawdę mnóstwo. Nawet sam Microsoft zaleca konwersję makr na kod VBA. Warto.
Tabele
miejsce, gdzie zapisywane są wszystkie dane.
Kwerendy
obiekty związane z filtrowaniem i sortowaniem danych, realizowane przez wysyłanie zapytań do tabel (kodem SQL). Są też kwerendy funkcjonalne automatycznie modyfikujące/usuwające/dodające dane tabel
Formularze
obiekty prezentujące dane na ekranie w przyjaznej formie graficznej. Oprócz danych można wstawiać różnego rodzaju obiekty typu przyciski, obrazy itp.
Raporty
podobnie jak formularze pozwalają prezentację danych, ale w formie przystosowanej do wydruku