Makro jest akcją lub zestawem akcji, z których każda wykonuje określoną operację, taką jak otwarcie formularza lub wydrukowanie raportu. Makra pomagają zautomatyzować często wykonywane zadania. Można na przykład uruchamiać makro drukujące raport, gdy użytkownik klika przycisk polecenia.
Moduł jest zbiorem deklaracji i procedur języka Visual Basic for Applications przechowywanych razem jako jedna całość.
Istnieją dwa podstawowe typy modułów: moduły klasy i moduły standardowe. Każda procedura w module może być procedurą typu Function lub procedurą typu Sub.
Moduły klasy
Moduły formularzy i moduły raportów są modułami klasy związanymi z określonym formularzem lub raportem. Moduły formularza i raportu często zawierają procedury zdarzeń, które są uruchamiane w odpowiedzi na zdarzenie formularza lub raportu. Procedur zdarzeń można używać do sterowania działaniem formularzy i raportów oraz ich odpowiedziami na akcje użytkownika, takie jak np. kliknięcie przycisku polecenia.
Moduły standardowe
Moduły standardowe zawierają ogólne procedury, które nie są związane z żadnym innym obiektem, oraz często używane procedury, które można uruchamiać z dowolnego miejsca w bazie danych
Procedura jest jednostką kodu języka Visual Basic for Applications. Procedura zawiera szereg instrukcji i metod, które wykonują określone operacje lub służą do obliczania wartości. Na przykład następująca procedura zdarzenia używa metody OpenForm do otwarcia formularza "Zamowienia":
Private Sub OpenOrders_Click( DoCmd.OpenForm "Zamowienia End Sub
Istnieją dwa rodzaje procedur:
1. Procedury typu Sub wykonują operację lub serię operacji, lecz nie zwracają żadnej wartości. Można tworzyć własne procedury Sub lub wykorzystywać szablony procedur zdarzeń zdefiniowane w programie Microsoft Access.
Każdy formularz i raport w bazie danych posiada wbudowany moduł formularza lub moduł raportu, który zawiera szablony procedur. Można dodać kod uruchamiany w odpowiedzi na zdarzenia występujące w formularzu, raporcie lub formantach formularza czy raportu. Kiedy program Microsoft Access rozpoznaje wystąpienie zdarzenia w formularzu, raporcie lub formancie, automatycznie uruchamia procedurę obsługi zdarzenia dla danego obiektu lub zdarzenia. Można na przykład napisać procedurę ustawiającą kursor w polu tekstowym "Nazwisko żony/męża" uruchamianą w momencie zaznaczenia przez użytkownika pola wyboru "Żonaty/zamężna".
Wskazówka: Wiele kreatorów (na przykład Kreator przycisków poleceń) tworzących obiekty tworzy również procedury zdarzeń dla tych obiektów. Zapoznanie się z tymi procedurami zdarzeń ułatwia zrozumienie sposobu działania procedur.
2. Procedury typu Function (często zwane po prostu funkcjami) są to takie procedury, które zwracają jakąś wartość, na przykład wynik obliczenia. Język Visual Basic zawiera wiele wbudowanych funkcji. Na przykład funkcja Now zwraca bieżącą datę i godzinę. Istnieje również możliwość tworzenia własnych funkcji niestandardowych.
Ponieważ funkcje zwracają wartości, są używane w wyrażeniach. Wyrażenia zawierające funkcje są często wykorzystywane w programie Microsoft Access, na przykład w instrukcjach i metodach języka Visual Basic, w wielu ustawieniach właściwości czy w wyrażeniach kryteriów w filtrach i kwerendach.
Oto przykładowa procedura typu Function, FirstOfNextMonth, która zwraca datę pierwszego dnia kolejnego miesiąca (po dacie bieżącej):
Function FirstOfNextMonth( FirstOfNextMonth = DateSerial(Year(Now), Month(Now) + 1, 1 End Function
Ta funkcja niestandardowa składa się z jednej instrukcji przypisującej wyniki wyrażenia (po prawej stronie znaku równości [=]) nawie funkcji FirstOfNextMonth (po lewej stronie znaku równości). Wynik jest obliczany za pomocą wbudowanych funkcji języka Visual Basic: DateSerial, Year, Now i Month.
Po utworzeniu tej funkcji, można jej używać w dowolnych wyrażeniach w programie Microsoft Access. Na przykład, aby określić datę pierwszego dnia kolejnego miesiąca jako wartość domyślną dla pola tekstowego, w arkuszu właściwości należy ustawić właściwość DefaultValue pola tekstowego w następujący sposób:
=FirstOfNextMonth()
Zastosowanie
Składnia
Przykład: Obsługa pól na formularzu
Procedura obsługi zdarzenia OnCurrent powoduje, że jeśli pracownik ma wpisaną datę zwolnienia, to jego dane nie mogą być zmienione.
Sub Form_Current () On Error Resume Next ' konieczne - nie wszystkie pola mają własność Enabled Dim i As Integer Dim f As Form Set f = Forms![Pracownicy] For i = 1 To Me.Count f(i).locked = Not IsNull(Me![Data zwolnienia]) Next i End Sub
Pokazano:
Inne ciekawe możliwości języka: