Laboratorium 2 programowanie w VBA

PROGRAMOWANIE W VBA – MICROSOFT ACCESS

LABORATORIUM 2

Ćwiczenie 1

Sprawdzanie warunków przy pomocy instrukcji If


W tym ćwiczeniu wykorzystasz podstawową strukturę sterującą, dzięki której jeśli określony warunek jest spełniony, to procedura może wykonać pewne określone zada­nie.


Realizacja zadania przy istnieniu warunku


W tym przykładzie utworzysz prostą strukturę sterującą If... Then... End If do sprawdzania pojedynczego warunku i podejmowania określonych działań, jeśli testo­wany warunek jest spełniony. Warunek może przyjmować wartości Prawda lub Fałsz. Instrukcja taka może być odczytana w następujący sposób: "Jeśli warunek jest spełniony, to wykonaj określone działanie, po czym zakończ instrukcję warunkową".


UWAGA. Pamiętaj o użyciu instrukcji Option Explicit w sekcji deklaracji każdego z tworzonych modułów.


Utworzenie procedury sprawdzającej jeden warunek


1. Utwórz bazę danych w katalogu ...\LAB02 i nazwij ją PrgFun.MDB.


Utwórz moduł. Wprowadź poniższy kod:


Sub Cwicz_1a ( )

Dim WarunekTestowy$

WarunekTestowy$ = "Pies"

If WarunekTestowy$ = "Pies" Then

MsgBox "Warunek jest spełniony!"

End If

End Sub


Uruchomienie procedury Cwicz_1a


1. Uruchom procedurę, wprowadzając jej nazwę w Oknie bezpośrednim.

Zmienna WarunekTestowy$ zawiera ciąg znaków Pies, który jest porównywany z ciągiem znaków Pies, z prawej strony znaku równości. Dzięki temu warunek ma wartość Prawda i instrukcja znajdująca się po Then jest wykonywana - pojawia się okno komunikatu.


Realizacja zadania w zależności od tego, który waru­nek jest spełniony


W tej części ćwiczenia dowiesz się jak określić, który przycisk został wybrany w oknie komunikatu.




Utworzenie procedury sprawdzającej dwa warunki


Wykorzystaj funkcję MsgBox do dostarczenia wartości, którą można wykorzystać w strukturze If... Then... Else... End If.


I . Utwórz nową procedurę typu Sub o nazwie Cwicz_1 b


Sub Cwicz_lb

Dim PrzyciskiTakNie%, Odpowiedz

PrzyciskiTakNie = 4

Odpowiedz = MsgBox("Wybierz przycisk Tak lub Nie.",

PrzyciskiTakNie)

If Odpowiedz = 6 Then

MsgBox "Wybrałeś Tak!"

Else

MsgBox "Wybrałeś Nie!"

End If

End Sub


2. Uruchom procedurę.


UWAGA. Niektóre funkcje zawracają wartość 1 jako Prawda, a niektóre wartość -1. Pamiętaj, że zero to Fałsz, a nie zero to Prawda..


Wielokrotne sprawdzanie warunku


Tym razem użyjesz bardziej złożonej wersji podstawowej instrukcji If... Then. Jeśli pierwszy warunek nie jest spełniony możesz ponownie sprawdzić ten sam lub inny wa­runek i podjąć w związku z tym odpowiednie działania. Istnieje możliwość zagnieżdże­nia kilku bloków EIseIf wewnątrz zewnętrznej struktury If... Then... End If. Możesz także wprowadzić końcową instrukcję Else, która jest realizowana w przypadku, gdy żaden z wcześniejszych warunków nie zostanie spełniony.

Wykorzystanie instrukcji If... Elself... Else... End If

1. Utwórz nową procedurę o nazwie Cwicz_1c.

Sub Cwicz_1c ()

Dim PrzyciskiTakNieAnuluj%, ZnakZapytania%, Odpowiedz%

PrzyciskiTakNieAnuluj = 3

ZnakZapytania = 32

Odpowiedz = MsgBox("Wybierz przycisk Tak, Nie lub Anuluj.", _

PrzyciskiTakNieAnuluj + ZnakZapytania)

If Odpowiedz = 6 Then

MsgBox " Wybrałeś Tak!"

ElseIf Odpowiedz = 7 Then

MsgBox " Wybrałeś Nie!"

ElseIf Odpowiedz = 2 Then

MsgBox " Wybrałeś Anuluj, albo nacisnąłeś przycisk" & _

" Esc, lub też zamknąłeś okno komunikatu używając" & _

" pola menu sterowania!"

End If

' Inne instrukcje mogą zostać umieszczone w tym miejscu

End Sub


2. Uruchom kilkakrotnie powyższą procedurę, wybierając różne przyciski i obserwując rezultaty. Jak można zauważyć, wybór każdego z przycisków w pierwszym oknie zwraca inną wartość. Przykładowo, przycisk Anuluj zwraca wartość 2. Zachowaj moduł jako Ćwiczenie_lc.




Ćwiczenie 2

Wykorzystanie struktury sterującej Select Case


W ćwiczeniu tym dowiesz się jak tworzyć instrukcje z Select Case.


Sprawdzanie wartości zmiennej tekstowej przy użyciu Select Case


Utwórz nowy moduł i wprowadź poniższy kod:


Sub Cwicz_2a ( )

Dim NazwaProcedury$, Odpowiedz$

NazwaProcedury = "Przykład z Select Case"

Odpowiedz = InputBox$("Wpisz Tak lub Nie", NazwaProcedury$)

Select Case Odpowiedz$

Case "Tak"

MsgBox "Wpisałeś Tak!"

Case "Nie"

MsgBox "Wpisałeś Nie!"

Case Else

MsgBox "Spróbuj jeszcze raz!"

End Select

End Sub


Uruchomienie procedury Ćwicz_2a

1. Uruchom procedurę.

W oknie dialogowym wpisz Tak. Uruchom procedurę jeszcze raz, wpisując w oknie dialogowym Nie. Uruchom procedurę po raz trzeci i tym razem wpisz Brak decyzji . Zwróć uwagę na wyniki. Jeśli wpiszesz cokolwiek innego niż Tak lub Nie, albo pozostawisz okno dialogowe puste, to instrukcja Case Else przyjmuje wartość Prawda i wyświetlane jest okno z komunikatem Spróbuj jeszcze raz. W tym przykładzie musisz wpisywać tekst dokładnie aby otrzymać odpowiednią odpowiedź. Użycie instrukcji Case Else nie jest w procedurze konieczne, jeśli zachodzi pewność, że zawsze któryś z warunków Case będzie przyjmował wartość Prawda.


WSKAZÓWKA. Lepiej wprowadzać jest wiersz Case Else w każdej użytej strukturze Select Case.




Instrukcja Case w formie bardziej uniwersalnej


Aby instrukcja Case przyjęła wartość Prawda wystarczy spełnić jeden z kilku wa­runków, co czyni tę strukturę bardziej elastyczną.


1. Wprowadź poniższy kod:


Sub Cwicz_2b ( )

Dim Odpowiedz$

Odpowiedz$ = InputBox$("Wpisz Tak lub Nie")

Select Case Odpowiedz$

Case "Tak" "t"

MsgBox "Wpisałeś Tak, TAK, tak, T lub t!"

Case "Nie" "n" NIE, nie, N lub n!"

MsgBox "Wpisałeś Nie,

Case Else

MsgBox "Spróbuj jeszcze raz!"

End Select

End Sub


Uruchom procedurę i sprawdź jej działanie przy różnych odpowiedziach wpisywanych do okna dialogowego. Jak pokazano powyżej, możliwe jest sprawdzanie kilku warunków w jednej instruk­cji Case.


Testowanie zmiennej numerycznej przy pomocy Select Case


Poniższy przykład wykorzystuje strukturę sterującą Select Case do badania wartości zmiennej numerycznej.


Sub Cwicz_2c()

Dim Odpowiedz

Odpowiedzi = 9 'Wybierz liczbę pomiędzy 1 a 10

Select Case Odpowiedz

Case 1, 2, 3

MsgBox "Twoja liczba jest między 1 i 3!"

Case 3 * 3

MsgBox "Czy Twoją liczbą jest 3 do kwaratu?"

Case 4 To 10

MsgBox "Wiem, że jest ona pomiędzy 4 i 10."

Case Else

End Select

End Sub


1. Uruchom procedurę Cwicz_2c.

Zauważ, że zarówno druga jak i trzecia instrukcja Case przyjmuje wartość Prawda, ale ponieważ druga instrukcja jest przed trzecią, to druga jest jedyną, która zostaje wykonana i wyświetlony zostaje jedynie komunikat 3 do kwadratu. Uruchom procedurę Cwicz_2c jeszcze kilka razy, zmieniając za każdym razem wartość zmiennej Odpowiedz i obserwując wyniki. Zamknij moduł i zachowaj go pod nazwą Ćwiczenie_2c.


Ćwiczenie 3

Zmienne tablicowe


W tym punkcie będziesz ćwiczył określanie rozmiarów i deklarowanie zmiennych tablicowych. Zmienne, których używałeś do tej pory mogły przechowywać tylko jedną wartość, tekstową bądź numeryczną. Zmienne tablicowe mogą przechowywać wiele wartości.


Deklarowanie dwukolumnowej tablicy do przechowywania trzech elemen­tów


1. Utwórz nowy moduł i zadeklaruj dwukolumnową tablicę do przechowywania trzech elementów.

2. W sekcji deklaracji globalnych modułu, po instrukcjach

Option Compare Database

Option Explicit


wpisz


Dim MojaPierwszaTablica$(2,1)


UWAGA. Numerowanie elementów tablicy zaczyna się od zera. Trzyelementowa tabli­ca zawiera elementy 0, 1 oraz 2 (dlatego pierwszym argumentem jest 2), pierwsza ko­lumna ma numer 0, a druga 1 (dlatego drugim argumentem jest 1 ). Aby utworzyć tabli­cę jednokolumnową należy opuścić drugi argument.


3. Przypisz ciągi znaków do każdego elementu tablicy z pierwszej (o numerze zero) kolumny. Utwórz nową procedurę typu Sub o nazwie Cwicz_3a i wpisz poniższy kod:


MojaPierwszaTablica$(0,0) - "Wiersz zero, kolumna zero - pies"

MojaPierwszaTablica$(1,0) - "Wiersz jeden, kolumna zero - giez"

MojaPierwszaTablica$(2,0) - "Wiersz dwa, kolumna zero - bies"


Przypisz ciągi znaków do każdego elementu tablicy z drugiej (o numerze jeden) ko­lumny. Po

MojaPierwszaTablica$(2,0) - "Wiersz dwa, kolumna zero - bies"


wpisz:


MojaPierwszaTablica$(0,1) - "Wiersz zero, kolumna jeden - kot”

MojaPierwszaTablica$(1,1) - "Wiersz jeden, kolumna jeden – pot”

MojaPierwszaTablica$(2,1) - "Wiersz dwa, kolumna jeden – młot”


4. Utwórz okno komunikatu, wyświetlające zawartość jednego z elementów tablicy. Po MojaPierwszaTablica$(2,1) - "Wiersz dwa, kolumna jeden – młot”­


wpisz


MsgBox MojaPierwszaTablica$(2,0)

End Sub


5. Uruchom procedurę Cwicz_3a i zaobserwuj rezultat jej działania.


Zmiana wartości argumentu


1. Zmień wartości w argumencie MojaPierwszaTablica.$ instrukcji wyświetlającej okno dialogowe. Zastąp:

MsgBox MojaPierwszaTablica$(2,0)

instrukcją

MsgBox MojaPierwszaTablica$(2,1)

2. Uruchom procedurę Cwicz_3a. Zmieniając numer wiersza i kolumny możesz oglądać różne elementy tablicy.

3. Ponieważ będziesz potrzebował powyższej procedury w następnym ćwiczeniu, za­chowaj ją pod nazwą Cwicz_3a.




Ćwiczenie 4

Realizacja pętli przy pomocy For. . . Next


Konstrukcję pętli For...Next stosuje się w sytuacji, gdy zachodzi konieczność wy­konania pewnych operacji ściśle określoną ilość razy. Procedura może realizować serię poleceń przy każdym "przebiegu" przez pętlę.



Praca z pętlami For...Next


W pierwszym przykładzie napiszesz prostą pętlę, która będzie wyświetlać okno ko­munikatu przy każdym przebiegu procedury przez tę pętlę. Okno komunikatu będzie in­formować, który raz pętla została wykonana. W ćwiczeniu tym będziesz określał, ile ra­zy pętla ma zostać wykonana, poprzez ustawianie odpowiednich wartości zmiennych występujących w procedurze.

4. Wprowadź poniższy kod do tego samego modułu, którego używałeś w poprzednim ćwiczeniu:


Sub Cwicz_4a

NumerPoczatkowy = 1

NumerKoncowy = 10

WielkoscKroku = 2

TytulProcedury$ _ "Licznik puli"

For i = NumerPoczatkowy To NumerKoncowy Step WielkoscKroku

MsgBox "Licznik pętli ma wartość " + Str$(i), 0, _ TytulProcedury$

Next i

End Sub


5. Uruchom procedurę Cwicz_4a. Przy każdym przebiegu przez pętlę klikaj w oknie komunikatu na przycisku OK. i obserwuj rezultaty.


Pętla licząca wstecz


6. Ustaw wartości zmiennych w następujący sposób:


NumerPoczątkowy = 21

NumerKoncowy = 1

WielkoscKroku = -3


Ponownie uruchom procedurę i obserwuj rezultaty. Zauważ, że tym razem pętla liczy wstecz, od 21 do 3.




Wyświetlenie wszystkich elementów tablicy


Dowiedziałeś się już, że jedna zmienna tablicowa może przechowywać kilka warto­ści w wierszach i kolumnach tabeli. Pętla bardzo dobrze nadaje się do wykonywania różnych operacji na tablicy.

1. Otwórz procedurę Cwicz_3a, którą utworzyłeś w poprzednim ćwiczeniu.

2. Utwórz pętlę, która wyświetli wszystkie trzy elementy z kolumny 1 zmiennej MojaPierwszaTablica$. Zastąp:


MsgBox MojaPierwszaTablica$(2,1)

instrukcją

For i = 0 To 2

MsgBox MojaPierwszaTablica$(i,1)

Next i


3. Uruchom procedurę Cwicz_3a i obserwuj rezultaty.

Pętla w tym przykładzie jest tak ustawiona, by wykonała się trzy razy (taka jest ilość pozycji w tablicy). Liczbę, od której rozpocznie się odliczanie pętli, możesz określić przypisując zmiennej, w tym przypadku i, odpowiednią wartość. Ponieważ pierwszy wiersz tabeli oznaczony jest indeksem 0, zmiennej i przypisano wartość 0. Każda itera­cja pętli odpowiada jednemu wierszowi tabeli. Przy pierwszym przebiegu pętli i ma wartość 0, przy drugim 1, a przy ostatnim 2.





Ćwiczenie 5

Pętle While...Wend


Jeśli nie jesteś w stanie dokładnie określić, ile razy ma zostać wykonane określone działanie, to nie możesz zastosować wykorzystywanej w ostatnim ćwiczeniu pętli For...Next. Musisz skorzystać z pętli While...Wend. Z konstrukcji tej korzysta się w sytuacji, gdy realizacja określonych akcji ma być kontynuowana tak długo, jak długo odpowiedni warunek lub warunki są spełnione.



Praca z pętlami While...Wend


W tym przykładzie na ekranie będzie wyświetlane okno dialogowe do momentu wpi­sania właściwego tekstu.

1. Utwórz nową procedurę o nazwie Cwicz_Su. 2. Wpisz poniższy kod:


Sub Cwicz_5a

Klucz$ = "Klucz"

While Not Haslo$ = Klucz$

Haslo$ = InputBox$("Jakie jest tajne słowo?", "Sprawdź " _ & Klucz)

Wend

End Sub


3. Uruchom procedurę.

Jeśli nie wpiszesz nic do zmiennej Klucz$, to okno dialogowe będzie się wciąż poka­zywać. Wybór przycisku Anuluj lub klawisza [Esc] nie da możliwości opuszczenie pę­tli, ponieważ procedura ignoruje wszystkie błędy. Tylko wpisanie poprawnego hasła powoduje, że warunek przy While przyjmuje wartość Fałsz i następuje zatrzymanie pę­tli.


UWAGA. Tworząc pętle, upewnij się zawsze, czy przypadkiem nie stworzyłeś pętli nieskończonej. Jeśli warunek po While zawsze będzie spełniony, to pętla nigdy się nie zatrzyma, chyba że przerwiesz działanie programu.






Ćwiczenie dodatkowe

Wyświetlanie elementów tablicy


Zmodyfikuj procedurę Cwicz_3a, umieszczając w niej dodatkową pętlę, tak by wyświetlała w oknie komunikatu wszystkie elementy tablicy.


9


Wyszukiwarka

Podobne podstrony:
Laboratorium 1 programowanie w VBA
Laboratorium 3 programowanie w VBA
Laboratorium 4 programowanie w VBA
access programowanie w vba
Projekt Inż, Wstęp, Laboratorium programowania niskopoziomowego
Excel 2003 PL Programowanie w VBA Vademecum profesjonalisty
GiG-laboratorium-program, IV semestr moje, elektrotechnika, Nowy folder
Laboratorium 2 Program
laboratorium 1 program
Excel 2003PL Programowanie VBA Vademecum Profesjonalisty
Programowanie w VBA
Access Programowanie w VBA acpv Nieznany
Visual basic, Programowanie VBA
Excel 2007 pl Programowanie w VBA
Laboratorium programowania w C
Excel 2013 PL Programowanie w VBA dla bystrzakow
access programowanie w vba
Excel 2010 PL Programowanie w VBA Vademecum Walkenbacha 2