Edytor VBA – prywatne i publiczne

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:

kliknij, aby powiększyć

 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Zdarzenia formularza

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 Zdarzenia  Arkusza 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

A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Moduły VBA

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.

 

Obiekty aplikacji Access

Podstawowe obiekty aplikacji Access:

 

  • 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
  • Makra
    zdefiniowane procedury automatyzujące pracę
  • Moduły
    moduły kodu VBA,  podobnie jak makra, pozwalające na automatyzację działania poszczególnych elementów aplikacji