Zachodniopomorski uniwersytet technologiczny instytut technologii mechanicznej



Pobieranie 366.54 Kb.
Strona7/9
Data28.04.2016
Rozmiar366.54 Kb.
1   2   3   4   5   6   7   8   9

Ćwiczenie 8


Zagadnienia:

Podstawy projektowania aplikacji w Excelu:



  • Projektowanie formularzy z elementami sterującymi (kontrolkami).

  • Tworzenie procedur obsługi zdarzeń elementów formularza.

Ćwiczenie to należy wykonać w opracowanym w ćwiczeniu 7 skoroszycie sprzedaz herbaty.xlsm (zadanie 1 jednak nie odnosi się do danych z arkusza kalkulacyjnego i może być wykonane w dowolnym innym pliku Excela).


Zadanie 1

Celem zadania jest zaprojektowanie prostego kalkulatora realizującego podstawowe działania arytmetyczne.



  1. Zaprojektuj formularz kalkulatora pokazany na rys.1. W tym celu w edytorze VB z menu Insert kliknij pozycję UserForm. W oknie Properties ustaw właściwość Caption oraz Name na Kalkulator zamiast UserForm1.





  1. Wykorzystując okno Toolbox wstaw wzorując się na rysunku powyżej następujące kontrolki:

  • Cztery etykiety L1,L2,L3 i L4. W oknie properties ustaw właściwości:

- Font – wielkość 12 + pogrubienie,

- TextAlign (położenie tekstu) na 2-fmTextAlignCenter (wypośrodkowanie),

- Caption (napisy) – ustaw zgodnie z rysunkiem na Liczba 1 (L1), Liczba 2 (L2), Wynik obliczeń (L3) i wymaż napis Label4 (L4).

- BorderStyle (styl obwódki) (L4) zmień na fmBorderStyleSingle.

- (Name) czyli nazwę zamiast Label4 zmień na Wynik.


  • Dwa pola tekstowe T1 iT2. Ustaw właściwości:

- Font – wielkość 12 + pogrubienie,

- Text – wymaż TextBox1 i TextBox2,

- BorderStyle (styl obwódki) zmień na fmBorderStyleSingle,

- (Name) zmień na Ed_liczba1 i Ed_liczba2.



  • Pięć przycisków C1,C2,C3,C4 i C5. Ustaw właściwości:

- Font – wielkość 12 + pogrubienie,

- TextAlign (położenie tekstu) na 2-fmTextAlignCenter

- Caption (napisy) – ustaw zgodnie z rysunkiem na: +,-,*,/ i Koniec.

- (Name) zmień odpowiednio na Kl_plus, Kl_minus, Kl_mno, Kl_dziel, Kl_koniec.





      Uwagi odnośnie oprogramowania kalkulatora

      Końcowym etapem projektu jest oprogramowanie kalkulatora. Z punktu widzenia systemu operacyjnego każde kliknięcie na wybrany przycisk kalkulatora jest pewnym zdarzeniem, na które oprogramowanie powinno w określony sposób zareagować np. przez wyświetlenie w polu wynik jakiegoś napisu. Sposób reakcji określa procedura obsługi zdarzenia, którą twórca programu powinien zaprojektować. Nazwa takiej procedury w VBA tworzona jest automatycznie wg schematu nazwa obiektu-kontrolki + podkreślenie + zdarzenie np. procedura obsługi kliknięcia na przycisk + ma nazwę Kl_plus_Click. Procedury obsługi zdarzeń mogą przetwarzać dane reprezentowane przez zmienne i stałe w języku VBA, przez obiekty arkusza kalkulacyjnego jak i przez właściwości związane z obiektami (kontrolkami) zaprojektowanego formularza. Te ostatnie są identyfikowane za pomocą nazwy kontrolki i po kropce podanej właściwości np. tekst wpisany do pola tekstowego T1 określa napis Ed_liczba1.Text (por. p.2). W przypadku kontrolek nie jest stosowana ich jawna deklaracja w instrukcji Dim. Właściwości obiektów mogą być różnych typów, np. właściwość Text jest typu string. Informację odnośnie typu właściwości można uzyskać klawiszem F1 ustawiając kursor na nazwie właściwości. Jeśli wpiszemy liczbę do pola tekstowego to będzie ona interpretowana jako tekst (string) i nie będzie mogła być używana w operacjach arytmetycznych. Dlatego też stosuje się tzw. funkcje konwersji, które dokonują przekształcenia danej jednego typu na daną innego typu. Przykładem może być funkcja CDbl, która zamienia tekst na liczbę typu Double. Uwaga: VBA niejawnie używa tego typu funkcji w instrukcjach przypisania. Przykład: przy deklaracji



      Dim s As string, d As double

      poprawna jest instrukcja:

      d = s

      która w rzeczywistości jest instrukcją:



      d = CDbl(s)

      W sytuacji gdy tekst s nie ma formatu liczbowego zostanie w obu przypadkach wygenerowany błąd. Można go zignorować wypisując wcześniej polecenie:



      On Error Resume Next

    3. Wykonaj teraz następujące czynności:



  • W module Arkusz1 napisz makro:



Sub Uruchom_kalkulator()

Kalkulator.Show



End Sub

W arkuszu Excela osadź przycisk i przypisz do niego to makro. Uruchom kalkulator, a następnie zamknij go w prawym górnym rogu formularza.



    Uzupełnij procedurę obsługi tego klawisza do postaci:



Private Sub Kl_koniec_Click()

'Instrukcja usuwa formularz z pamięci operacyjnej

Unload Me



End Sub
Uruchom kalkulator i sprawdź działanie procedury.


  • Będąc w oknie projektu formularza kliknij dwukrotnie na przycisk +

    Uzupełnij procedurę obsługi tego klawisza do postaci:



Private Sub Kl_plus_Click()

Dim x As Double, y As Double

On Error Resume Next

x = Ed_liczba1.Text

y = Ed_liczba2.Text

Wynik.Caption = x + y



End Sub
Uruchom kalkulator i sprawdź działanie procedury.


  • W podobny sposób oprogramuj pozostałe przyciski. Napisz jedną z procedur obsługi przycisku np. przycisku mnożenia bez użycia zmiennych x, y wykorzystując funkcję CDbl. W procedurze obsługi przycisku dzielenia uwzględnij przypadek dzielenia przez 0. Procedura powinna zasygnalizować błąd dzielenia przez 0.



Zadanie 2
Celem kolejnego zadania jest zaprojektowanie formularza przetwarzającego dane z arkusza kalkulacyjnego. Zadanie to bazuje na opracowanym w ćwiczeniu 7 zakresie zadania 3 arkuszu sprzedaż herbaty.xls.

  1. Zaprojektuj formularz, który po uruchomieniu wygląda tak jak na rysunku poniżej.



Formularz zawiera na górze pole tekstowe, poniżej pole listy, oraz przycisk z napisem Koniec. Nazwij te kontrolki odpowiednio: Okno_tekst, Okno_listy i Klawisz_koniec. Oprócz tych kontrolek w formularzu osadzone są etykiety, które służą do opisu formularza. Ustaw odpowiednio właściwości takie jak Font, Text, Caption, wszystkich kontrolek. Oprócz tego ustaw właściwość ColumnCount kontrolki Okno_listy na 3. Następnie kliknij w oknie projektu dwukrotnie na przycisk Koniec i dopisz Unload Me do procedury Klawisz_koniec_Click(). Następnie dopisz procedurę obsługi zdarzenia AfterUpdate dla kontrolki Okno_tekst pokazaną poniżej:
Private Sub Okno_tekst_AfterUpdate()

Okno_listy.List = WyszukajDanezTabeli(CDbl(Okno_tekst.Text), _

[pracownik], [herbata], [ilość])

End Sub
Zdarzenie AfterUpdate polega na wpisaniu wartości do pola tekstowego i naciśnięciu ENTER. Napis [pracownik] oznacza to samo co Range("pracownik").


  1. Zmodyfikuj formularz opracowany w poprzednim punkcie dodając nową kolumnę w oknie Okno_listy, w której będą podane ceny sprzedaży herbaty (cena 1kg razy ilość). Wskazówka: wykorzystaj funkcje tablicową opracowaną w ćwicze­niu 7 zadanie 4.

  2. Dodaj do formularza na wysokości klawisza Koniec etykietę o nazwie Licznik. Zmodyfikuj procedurę Okno_tekst_AfterUpdate tak aby w etykiecie Licznik była wyświetlana ilość wierszy wyświetlanych w oknie Okno_listy. Wskazówka: wykorzystaj funkcję WorksheetFunction.CountIf będącą angielskim odpowiednikiem funkcji arkusza kalkulacyjnego LICZ.JEŻELI.


Zadanie domowe

Zadanie to należy wykonać na podstawie arkusza sprzedaż herbaty.xls.



    Z
    aprojektuj formularz, który po uruchomieniu wygląda tak jak na rysunku poniżej. Formularz powinien po kliknięciu na wybrane nazwisko podać listę w drugim oknie.

Wskazówki: Osadź w formularzu dwa okna typu ListBox. W jednym oknie wypisz listę pracowników korzystając z właściwości RowSource. Aby wyświetlić zawartość drugiego okna wykorzystaj w procedurze obsługi kliknięcia pierwszego okna funkcję z zadania domowego ćwiczenia 7 w celu określenia właściwości List drugiego okna.
1   2   3   4   5   6   7   8   9


©absta.pl 2016
wyślij wiadomość

    Strona główna