PROGRAMOWANIE W VBA – MICROSOFT ACCESS
LABORATORIUM 1
W trakcie trwania tego ćwiczenia utworzysz nową bazę danych w katalogu C:\PST\LABS\LAB01.
W celu uniknięcia problemów wynikających z błędnych nazw zmiennych wskazane jest wprowadzenie instrukcji Option Explicit do sekcji deklaracji każdego tworzonego modułu. Jednym z najbardziej powszechnych źródeł błędów jest niepoprawne wpisania nazwy zmiennej. Instrukcja Option Explicit wymusza jawną deklarację wszystkich zmiennych znajdujących się w module. Jeśli Visual Basic for Application wykryje nazwę, która nie została jawnie zadeklarowana jako nazwa zmiennej, następuje wyświetlenie komunikatu o błędzie. Włączenie opcji "Żądanie deklaracji zmiennych" w menu Narzędzia/Opcje automatycznie wprowadzi instrukcję Option Explicit do sekcji deklaracji każdego tworzonego modułu.
Utworzysz i uruchomisz kilka różnych procedur typu Sub i Function. Będziesz także deklarował i wykorzystywał różne typy zmiennych. Większość procedur, które utworzysz w ramach tego laboratorium, będzie prosta i o niewielkich rozmiarach; ale nabyte przy tym umiejętności będą przydatne także przy tworzeniu złożonych procedur.
W tym ćwiczeniu utworzysz nową procedurę typu Sub, która będzie korzystać ze zmiennych.
UWAGA. Pamiętaj o użyciu instrukcji Option Explicit w sekcji deklaracji każdego z tworzonych modułów.
Utwórz nową bazę danych w podanym katalogu i nazwij ją LAB01.MDB.
W oknie Baza danych wybierz zakładkę Moduły oraz przycisk Nowy, aby utworzyć nowy moduł. Utwórz procedurę typu Sub o nazwie TestSubOne o zasięgu publicznym. Zadeklaruj w procedurze TestSubOne zmienną o nazwie MyText typu String. Przypisz zmiennej MyText tekst: To jest pierwsza procedura testowa. Wpisz poniższy kod:
Powoduje on wyświetlenie zawartości zmiennej MyText w oknie dialogowym. Funkcja MsgBox opisana jest dokładniej w następnych ćwiczeniach.
Twoja procedura powinna być podobna do poniższej:
Public Sub TestSubOne()
Dim MyText As String
MyText = "To jest pierwsza procedura testowa"
MsgBox MyText
End Sub
Uruchom procedurę przez wprowadzenie jej nazwy w Oknie Analiza programu (bezpośrednim) . Spowoduje to wyświetlenie poniższego okna dialogowego:
Zachowaj moduł jako Ćwiczenie_l.
Ćwiczenie 2
W tym ćwiczeniu zapoznasz się ze sposobem wywołania procedury typu Sub.
1. Utwórz nowy moduł, a następnie w oknie modułu, procedurę typu Sub o nazwie TestSubTwo.
Wywołaj procedurę TestSubOne z wnętrza procedury TestSubTwo.
Twoja procedura powinna być podobna do poniższej:
Public Sub TestSubTwo()
End Sub
Zmodyfikuj procedurę TestSubOne, tak by przyjmowała argument o nazwie MyText.
Zmodyfikuj procedurę TestSubTwo, tak by wywoływała procedurę TestSubOne i przekazywała jej argument Wywołana przez drugą procedurę testową.
Twoje procedury powinny być podobne do poniższych (znajdować się one będą w dwóch oddzielnych modułach, a nie obok siebie, jak to pokazano poniżej):
Public Sub TestSubOne(Optional MyText As String)
MsgBox MyText
End Sub
Public Sub TestSubTwo()
TestSubOne "Wywołana przez drugą procedurę testową"
End Sub
Przetestuj procedurę TestSubTwo i zachowaj ten moduł jako Ćwiczenie_2. Zachowaj moduł Ćwiczenie_1 wraz z wprowadzonymi w nim zmianami.
Ćwiczenie 3
W tym ćwiczeniu będziesz badał zasięg zmiennych w zależności od miejsca i sposobu ich deklaracji.
1 . Utwórz nowy moduł i wpisz poniższy kod w jego sekcji deklaracji.
' Domyślnie stałe mają zasięg lokalny.
Const MyVar = 459
' Deklaracja stałej o zasięgu publicznym.
Public Const MyString = "POMOC"
' Deklaracja wielu stałych w jednym wierszu.
Const MyStr = "Witaj", MyDouble = 3.4567
2 . W tym samym module utwórz nową procedurę typu Sub i wprowadź poniższy kod:
Public Sub TestScopeOne()
MsgBox MyString
MsgBox MyStr
End Sub
3. Uruchom powyższy kod w celu przetestowania. Zamknij i zachowaj powyższy moduł jako Ćwiczenie_3a.
4. Utwórz nowy moduł, a w nim poniższą procedurę:
Public Sub TestScopeTwo()
MsgBox MyString
MsgBox MyStr
End Sub
Uruchom kod. Co się stało? Dlaczego?
Zmień stałą MyStr na stałą Public, aby zlikwidować przyczynę błędu, a następnie ponownie uruchom kod.
Zamknij i zachowaj powyższy moduł jako Ćwiczenie_3b.
Ćwiczenie 4
W tym ćwiczeniu utworzysz i wywołasz procedurę typu Function. Możesz odwoływać się do takiej procedury podobnie jak do procedury typu Sub, z tą tylko różnicą, że zwraca ona wartość do procedury, z której została wywołana.
1. Utwórz nowy moduł, a w nim procedurę typu Function, o nazwie DodajPodatek, która przyjmuje argument o nazwie Kwota typu Currency i zwraca wartość typu Currency.
Funkcja DodajPodatek powinna zwracać jako rezultat wartość Kwota * 1.08.
Twoja funkcja powinna być podobna do poniższej:
Public Function DodajPodatek (Kwota As Currency) As
Currency
DodajPodatek = Kwota * 1.08
End Function
Sprawdź działanie funkcji w oknie bezpośrednim, wprowadzając ?Dodaj Podatek (100).
Zwróć uwagę, że zwracana wartość jest wyświetlana w oknie bezpośrednim.
W tym samym module utwórz nową procedurę typu Sub.
Public Sub WyświetlPodatek ()
MsgBox "Kwota z podatkiem wynosi: " &
DodajPodatek(100)
End Sub
Wywołaj procedurę wpisując w oknie bezpośrednim WyświetlPodatek.
Zmodyfikuj procedurę, tak by pytała się użytkownika o wartość kwoty.
Public Sub WyswietlPodatek ()
Dim Kwota As Currency
Kwota = InputBox("Wprowadź kwotę")
MsgBox "Kwota z podatkiem wynosi: " &
DodajPodatek(Kwota)
End Sub
Wywołaj procedurę wpisując w oknie bezpośrednim WyświetlPodatek.
Zachowaj moduł jako Ćwiczenie_4.
Ćwiczenie 5
W tym ćwiczeniu utworzysz i wykorzystasz własne funkcje w module formularza. Wykonasz to ćwiczenie wykorzystując doświadczenie zdobyte w trakcie wykonywania poprzednich ćwiczeń.
1. Utwórz nowy, pusty formularz i wyłącz przycisk Kreatorzy formantów.
2. Dodaj do formularza przycisk polecenia, a w oknie jego właściwości wybierz właściwość zdarzenia Przy kliknięciu.
3. Korzystając z okna właściwości uruchom Konstruktor kodu.
UWAGA. Jeśli klikniesz prawym przyciskiem myszy w polu właściwości Przy kliknięciu, to pojawi się menu kontekstowe. Jeśli z tego menu wybierzesz polecenie Buduj..., to na ekranie pojawi się okno dialogowe Wybierz konstruktora. W oknie tym wybierz Konstruktor kodu i kliknij na OK. Na ekranie pojawi się w tym momencie okno modułu formularza.
4. Wprowadź do procedury instrukcję MsgBox wyświetlającą zdanie Gdzie jestem.
5. Sprawdź działanie przycisku.
6. Wróć do widoku projektu formularza i zmień jego właściwość Nazwa na Gdzie jestem.
7. Sprawdź działanie przycisku. Dlaczego nie chce on działać?
8. Otwórz moduł formularza i znajdź kod poprzedniej procedury.
9. Popraw procedurę, tak by jej kod działał poprawnie.
Ćwiczenie dodatkowe
W tym ćwiczeniu utworzysz nową, zdefiniowaną przez użytkownika, funkcję.
1. Utwórz zdefiniowaną przez użytkownika funkcję o nazwie ReverseName, która odczytuje tekst i przestawia go względem znajdującego się w tekście przecinka, jak to pokazano poniżej. Uruchom tę funkcję w oknie bezpośrednim.