instrukcja7 GG

background image

Informatyka – programowanie, Politechnika Świętokrzyska

str. 1

Opracował W. Gierulski

Visual Basic dla Aplikacji w Excelu

Ćwiczenie 7; formularze - ankieta

Zbudować aplikację umożliwiającą wprowadzanie danych ankietowych do arkusza Excel, oraz analizę

wprowadzonych danych.

1.

W skoroszycie pozostaw cztery arkusze o nazwach ankieta, baza, tło, tytuł.

2.

W arkuszu ankieta w wierszu 2 wpisz w kolejnych komórkach:

liczba

A2

płeć

D2

zadowolenie

G2

ile_lat

J2

lp

B2

wykształcenie

E2

prywatne

H2

kupno

K2

wiek

C2

marka

F2

zarobkowe

I2

uwagi

L2

Zaznacz blok A2:L3, a następnie wybierz z menu wstaw - nazwy- utwórz-górny wiersz. W ten sposób zostaną
nadane nazwy dla komórek z trzeciego wiersza.

3.

Przejdź do edytora VB, wstaw formularz(Insert|UserForm). Nadaj mu nazwę oraz tytuł (właściwość Name,
Caption) ANKIETA. Następnie umieść w nim obiekty z paska Formularze.


1-2- lista+pole edycji, nadaj nazwy (właściwość Name) pole_1 (dla 1), lista_1 (dla 2).

3-pole edycji, nadaj nazwę pole_2

4-pole listy, nadaj nazwę lista_2

5-pole edycji, nadaj nazwę pole_3

6-pasek przewijania, nadaj nazwę pasek_1, ustal wartość maksymalną 100

7-etykieta, nadaj nazwę etykieta_2

8-etykieta, nadaj nazwę etykieta_1

9-cztery kolejne obiekty pole wyboru, nadaj nazwy wybór_1, wybór_2, wybór_3, wybór_4, umieść pola w
odpowiednich ramkach; dla ramek określ właściwość Caption - odpowiednio użytkowanie, samochód

10-dwa obiekty przycisk opcji, nadaj nazwy opcja_1, opcja_2, umieść pola w ramce z ustawioną
właściwością Caption

pozostałe obiekty formularza, tak jak na rysunku; dla przycisków określ właściwości Name oraz Caption.

4.

W arkuszu baza w komórkach A2:A11 wpisz nazwy samochodów. We właściwości
Row Source listy lista_1 wpisz adres zakresu baza!A2:A11 z nazwami samochodów.

5.

W arkuszu baza w komórkach D2:D5 wpisz rodzaj wykształcenia. We właściwości
Row Source listy lista_2 wpisz adres zakresu baza! D2: D5

PROCEDURY DLA FORMULARZA

6.

Dwukrotnym kliknięciem listy lista_l wejdź do edycji procedury - zdarzenia (uruchamianej automatycznie w

momencie kliknięcia listy) i wpisz jej treść. Zadaniem procedury jest wpisanie do pola tekstowego pole_1
elementu wybranego z listy.

1

2

5

6

7

8

9

10

3

4

background image

Informatyka – programowanie, Politechnika Świętokrzyska

str. 2

Private Sub lista_1_Click()
'pole_1.Text = lista_1.List(lista_1.ListIndex)
pole_1.Text = lista_1.Value
End Sub

7.

Przejdź do formularza, kliknij dwukrotnie pasek pasek_l i wpisz procedurę – zdarzenie. Zadaniem procedury jest
przekazanie do etykiety wartości wyselekcjonowanej na pasku.

Private Sub pasek_1_Change()
etykieta_1.Caption = pasek_1.Value
End Sub

8.

Dwukrotnie klikając przycisk z napisem koniec przejdź do edycji procedury - zdarzenia Procedura ta będzie
uruchamiana przy kliknięciu przycisku.


Private Sub koniec_Click()
ANKIETA.Hide
Worksheets("tytuł").Select
Range("a1").Select
End Sub

9.

Nad oknem kodu wybierz w liście po lewej General (Ogólne) i wpisz deklaracje:

Option Explicit
Dim liczba_wpisów As Integer

10.

Wpisz procedury lokalne. Zadaniem tej procedury jest wyczyszczenie elementów formularza przed następnym
wczytywaniem.

Sub czyszczenie()

pole_3.Text =""
Lista_1.ListIndex = 0
Lista_2.ListIndex = 1
pole_1.Text = ""
pole_2.Text = ""
etykieta_1. Caption = 0
pasek_1.Value = 0
wybór_1.Value = False
wybór_2.Value = False
wybór_3.Value = False
wybór_4.Value = False
Opcja_1.Value = False
Opcja_2.Value = True
etykieta_2.Caption = liczba_wpisów + 1

End Sub

11. Kolejna procedura służy do modyfikowania zmiennej liczba_wpisów, pamiętającej, ile rekordów jest zapisanych w

ankiecie. Informacja ta przechowywana jest w komórce liczba arkusza.

Sub licznik()

liczba_wpisów = Range("liczba") + 1
Range("liczba").Value = liczba_wpisów

End Sub

12.

Przejdź do formularza, kliknij dwukrotnie przycisk następny wpis i wpisz procedurę - zdarzenie. Procedura ta
będzie uruchamiana przez kliknięcie przycisku. Jej zadaniem jest przekazanie informacji z okien edycyjnych do
arkusza ankieta.

Private Sub nast

ę

pny_wpis_Click()

Dim płe

ć

As String, prywatne As String

Dim zarobkowe As String, ile_lat As String, kupno As String

licznik
If Opcja_1.Value Then

płe

ć

= "kobieta"

End If
If Opcja_2.Value Then

płe

ć

= "m

ęż

czyzna"

End If
If wybór_1.Value Then

prywatne = "tak"

Else

background image

Informatyka – programowanie, Politechnika Świętokrzyska

str. 3

prywatne = "nie"

End lf
If wybór_2.Value Then

zarobkowe = "tak"

Else

zarobkowe = "nie"

End If
If wybór_3.Value Then

ile_lat = "tak"

Else

ile_lat = "nie"

End If
If wybór_4.Value Then

kupno = "tak"

Else

kupno = "nie"

End If
With Worksheets("ankieta")
.Range("lp").0ffset(liczba_wpisów, 0).Value = liczba_wpisów

.Range("wiek").0ffset(liczba_wpisów, 0).Value = pole_3.Text

.Range("wykształcenie").0ffset(liczba_wpisów, 0).Value =

Lista_2.List(Lista_2.ListIndex)

.Range("marka").0ffset(liczba_wpisów, 0).Value = pole_1.Text

.Range("uwagi").0ffset(liczba_wpisów, 0).Value = pole_2.Text

.Range("zadowolenie").0ffset(liczba_wpisów, 0).Value =

CInt(etykieta_1 .Caption)

.Range("płe

ć

").0ffset(liczba_wpisów, 0).Value = płe

ć

.Range("prywatne").0ffset(liczba_wpisów, 0).Value = prywatne

.Range("zarobkowe").0ffset(liczba_wpisów, 0).Value = zarobkowe

.Range("ile_lat").Offset(liczba_wpisów, 0).Value = ile_lat

.Range("kupno").0ffset(liczba_wpisów, 0).Value = kupno

End With

czyszczenie

End Sub

13.

W oknie kodu dla formularza wybierz z pola wyboru po lewej UserForm, z pola wyboru po prawej Activate i
wpisz treść procedury. Procedura będzie uruchamiana przy każdorazowej aktywacji formularza (okna dialogu).

Private Sub UserForm_Activate()

czyszczenie
etykieta_2.Caption=Worksheets("ankieta").Range("liczba").Value + 1

End Sub

14.

Zmodyfikuj wpis do pola etykieta_2, tak aby był zgodny z zamieszczonym wzorem formularza.

PROCEDURY DLA SKOROSZYTU

15.

Klikając dwukrotnie ThisWorkBook w oknie VBA-Project przejdź do edycji procedur skoroszytu. W oknie
programu wybierz z listy po lewej Workbook , z listy po prawej Open i wpisz treść procedury:

Private Sub Workbook_Open()

Application.DisplayFullScreen = True
Worksheets("tytuł").Select
Range("a1").Select

End Sub

Procedura ta pełni funkcję procedury AutoOpen. Uruchamiana jest przy otwieraniu skoroszytu.

16.

Analogicznie wprowadź procedurę uruchamianą przed zamknięciem skoroszytu:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayFullScreen = False

End Sub

17.

Wpisz procedury uruchomienie (uaktywniającą formularz ankiety) oraz koniec (zamykającą skoroszyt).

Sub uruchomienie()

Worksheets("tło").Select
Range("a1").Select
ANKIETA.Show

End Sub

background image

Informatyka – programowanie, Politechnika Świętokrzyska

str. 4

Sub koniec()

ActiveWorkbook.Close

End Sub

W arkuszu tytuł umieść dwa przyciski z napisami: wprowadzanie danych oraz koniec i przypisz do nich procedury,

odpowiednio, uruchomienie oraz koniec.

ANALIZA DANYCH ANKIETOWYCH

18.

Wstaw Moduł1. W module tym będą procedury analizy danych ankietowych oraz usuwania danych dla prowadzenia
nowych badań ankietowych.

19.

Napisz procedurę wybór_marki. Procedura ta nadaje nazwę marka_blok dla zakresu komórek z ankiety
zawierających nazwy samochodów. Zakres ten zwiększa się przy wpisywaniu kolejnych danych.

Option Explicit
Sub wybór_marki()
Dim obszar As String, numer As Integer
numer = Worksheets("ankieta").Range("liczba").Value + 3
obszar = "=ankieta!R4C6:R" & numer & "C6"
ActiveWorkbook.Names.Add Name:="marka_blok", RefersToR1C1 :=obszar
End Sub

20.

W arkuszu baza w komórce B2 wprowadź funkcję obliczającą ile samochodów w zakresie marka_blok ma taką
nazwę jak jest w komórce A2 arkusza baza, =LICZ.JEŻELI(marka_blok ; A2). Skopiuj tą formułę do całego
zakresu B2:B11.

21.

W arkuszu baza, w komórce A12 wpisz słowo Inne, a w komórce B12 wpisz =liczba-SUMA(B2:B11)

22.

Wstaw wykres na oddzielnym arkuszu (Wykres1). Jako zakres wykresu wstaw A2:B12. Wybierz wykres
kolumnowy.

23.

Napisz procedury do_tytułu oraz wyniki_ankiety.

Sub do_tytułu()

Worksheets("tytuł").Select

End Sub

Sub wyniki_ankiety()

wybór_marki
Sheets("Wykres1").Select

End Sub

24.

W arkuszu tytuł wstaw przycisk i połącz go z procedurą wyniki_ankiety. W arkuszu Wykres1 umieść
przycisk i połącz go z procedurą do_tytułu.

PRZYGOTOWANIE NOWEJ ANKIETY

25.

Napisz procedurą nowa_ankieta Procedura ta usuwa dane z arkusza Ankieta po podaniu hasła.

Sub nowa_ankieta()
Dim obszar As String, numer As Integer, hasło As String
Dim przyciski As Integer, wybrany_przycisk As Integer

przyciski = vbYesNo + vbCritical + vbDefaultButton2
wybrany_przycisk = MsgBox(prompt:="Dotychczasowe dane b

ę

d

ą

usuni

ę

te," &

Chr(13) & "czy chcesz je usun

ąć

?", Title:="NOWA ANKIETA",

Buttons:=przyciski)

If wybrany_przycisk = vbNo Then Exit Sub
MsgBox prompt:="Przypomnij sobie hasło", Title:="NOWA ANKIETA"
hasło = InputBox(prompt:="Podaj hasło", Title:="USUWANIE DANYCH")
If hasło = "trabant" Then

numer = Worksheets("ankieta").Range("liczba").Value
obszar = "=ankieta!B4:L" & numer + 3
Worksheets("ankieta").Range(obszar).ClearContents
Range("liczba").Value = 0
Exit Sub

End If
MsgBox prompt:="nie znasz hasła, nie usuniesz danych", Title:="DANE

POZOSTAJ

Ą

"

End Sub

26.

W arkuszu tytuł umieść przycisk i połącz go z procedurą nowa_ankieta.

27.

Sprawdź działanie programu i przeprowadź badania ankietowe.

28.

Napisz własne procedury do analizy danych ankietowych


Wyszukiwarka

Podobne podstrony:
instrukcja1 GG
Instrukcja2 GG
Instrukcja2 GG
wykład 6 instrukcje i informacje zwrotne
Instrumenty rynku kapitałowego VIII
05 Instrukcje warunkoweid 5533 ppt
Instrukcja Konwojowa
2 Instrumenty marketingu mix
Promocja jako instrument marketingowy 1
Promocja jako instrument marketingowy

więcej podobnych podstron