Click here to load reader
View
220
Download
2
Embed Size (px)
ZACHODNIOPOMORSKI UNIWERSYTET TECHNOLOGICZNY
INSTYTUT TECHNOLOGII MECHANICZNEJ
PROGRAMOWANIE W EXCELU W JZYKU
VISUAL BASIC FOR APPLICATIONS
wersja 2 zmieniona
mgr Tadeusz Zibakowski
Szczecin, 2013
T.Zibakowski PROGRAMOWANIE str. 3
Wstp
Opracowanie zawiera zestaw wicze przeznaczonych do zaj laboratoryjnych
z przedmiotw Podstawy informatyki i algorytmizacji oraz Informatyka II realizowanych na
I roku studiw. Celem tych wicze jest wprowadzenie studenta w podstawowe zagadnienia
algorytmizacji i programowania, gwnie w zakresie programowania strukturalnego. Jako
narzdzie programistyczne wybrano jzyk Visual Basic for Applications, ktry jako jzyk
skryptowy moe by wykorzystywany do tworzenia zarwno prostych makr jak
i rozbudowanych aplikacji. Wszystkie wiczenia osadzone s w strukturze arkusza
kalkulacyjnego, ktry oferuje atwy dostp do danych i jest zarazem rdem ciekawych
problemw programistycznych. Niezbdne do wicze pliki Excela z danymi, mona pobra
ze strony internetowej autora http://tezet.zut.edu.pl lub z zasobw serwera dydaktycznego.
Poniewa zakada si, e student na wykadzie otrzymuje wiedz niezbdn do pracy na
zajciach laboratoryjnych, opis wicze nie zosta wzbogacony o szerszy materia pojciowy.
Podstawowe informacje na temat jzyka Visual Basic for Applications mona jednak znale
w dodatku zamieszczonym na kocu opracowania.
Zawarto:
wiczenie 1 ..................................................................................... 5
wiczenie 2 ..................................................................................... 9
wiczenie 3 .................................................................................... 12
wiczenie 4 .................................................................................... 14
wiczenie 5 .................................................................................... 16
wiczenie 6 .................................................................................... 18
wiczenie 7 .................................................................................... 22
wiczenie 8 .................................................................................... 25
wiczenie 9 .................................................................................... 29
DODATEK ....................................................................................... 33
http://tezet.zut.edu.pl/
T.Zibakowski PROGRA MOWANIE str . 5
W I C Z E N I E 1
Zagadnienia:
Nagrywanie makr i ich edycja w edytorze VBA.
Podstawowe elementy jzyka Visual Basic for Applications: zmienne i ich typy, instrukcje deklaracji i podstawienia.
Dostp do danych arkusza kalkulacyjnego za pomoc obiektu Range.
Instrukcja warunkowa If.
Procedura MsgBox.
1. Nagrywanie makra Zadanie 1. Rejestrowanie makra.
W nowym arkuszu wykonaj nastpujce czynnoci:
1. Na karcie Deweloper wybierz polecenie Zarejestruj makro w grupie Kod. 2. Zmie nazw makra na. Adam i wybierz klawisz skrtu na Ctrl-a
i potwierd OK rozpocz si tryb nagrywania makra.
3. W wybranej komrce wpisz napis Adam, potwierd wpisany napis myszk na pasku formuy.
4. Zakocz nagrywanie makra przyciskiem . 5. Wybierz now komrk i nacinij Ctrl-a. 6. Przejd do edytora VBA za pomoc kombinacji klawiszy Alt+F11 i kliknij na
znak + przy Modules i dwukrotnie na Module1:
Sub Adam()
'
' Adam Makro
'
' Klawisz skrtu: Ctrl+a
'
ActiveCell.FormulaR1C1 = "Adam"
End Sub
7. Zmie napis Adam na Adam i Ewa i ponownie uruchom makro w nowej wybranej komrce arkusza.
2. Obiekt Range
Zadanie 2
Wpisz w edytorze VBA w Module1 makro:
Sub Dodaj()
Range("C1")= Range("A1")+ Range("B1")
End Sub
W Arkuszu wpisz do komrek A1 i B1 dowolne wartoci liczbowe i wykonaj makro.
Napisy na zielono zaczy-
najce si od apostrofu to
komentarz
T.Zibakowski - PROGRAMOWANIE
str. 6
Uwaga. W VBA istnieje rwnie prostsza forma zapisu zmiennej zwizanej
z komrk arkusza kalkulacyjnego. Zamiast np. Range("C1")mona te stosowa
zapis [C1], zatem powysze makro mona zapisa nastepujco:
Sub Dodaj1()
[C1]= [A1]+ [B1]
End Sub
Ostrzeenie. W VBA mona utworzy zmienn o nazwie np. A1. Jeli jest taka
zmienna to VBA nie interpretuje zapisu [A1] jako odwoania do komrki A1.
Aby odwoa si do komrki A1 naley wwczas zastosowa zapis Range("A1").
Zadanie 3
Naley obliczy warto wyraenia:
22
22
1
1
baba
baba
(*)
dla wartoci a,b znajdujcych si w komrkach odpowiednio A1 i B1. W tym celu
napisz nastpujce makro:
Sub Wynik()
Dim a As Double ,b As Double ,c As Double
a = [A1]
b = [B1]
c =
[C1] = c
End Sub
Po wpisaniu wartoci do A1 i B1 i uruchomieniu makra, w komrce C1 pojawi
wynik.
Przykadowe wyniki przedstawia tabela poniej.
a b c
1 1 0
1 -1 -0,366025
0 0 1
Zadanie 4
Napisz makro, ktre zamienia wartoci dwch komrek, np. A2 i B2. (Wskazwka:
wprowad dodatkow zmienn typu Variant w celu zapamitania wartoci jednej
z komrek).
3. Instrukcja warunkowa If ThenElsei procedura wewntrzna MsgBox
Dzielenie dwch liczb czsto wymaga sprawdzenia czy dzielnik jest rny od 0.
Takiego sprawdzenia mona dokona za pomoc instrukcji warunkowej.
tu naley wypisa wyraenie zmiennych a i b obliczajce (*), skonstruowane na zasadach podobnych do pisania formu EXCELA
T.Zibakowski PROGRA MOWANIE str . 7
Zadanie 5
Napisz makro:
Sub Sprawd()
If [B3] 0 Then [C3] = [A3]/[B3] Else [C3]= "Bd"
End Sub
Wstawiaj do komrek A3 i B3 rne wartoci w tym rwnie 0 i uruchamiaj makro.
Nastpnie przepisz makro w alternatywnej postaci i sprawd jego dziaanie:
Sub Sprawd1()
If [B3] 0 Then
[C3] = [A3]/[B3]
Else
[C3]= "Bd dzielenia przez zero"
End If
End Sub
Nastpnie zamiast instrukcji [C3]= "Bd dzielenia przez zero"
wpisz:
[C3]= ""
MsgBox "Bd dzielenia przez zero"
Sprawd dziaanie makra.
Zadanie 6
Uzupenij zarys makra przedstawionego poniej, ktrego zadaniem jest rozwizanie
rwnania kwadratowego 02 cbxax w liczbach rzeczywistych Wykorzystaj
schemat blokowy algorytmu znajdujcego si obok. Wspczynniki a,b,c wpisz do
komrek A1,B1,C1. Pierwiastki, jeli s, makro powinno umieci w komrkach D1
i E1. Dodatkowe komunikaty mona wpisa do wybranej komrki lub wywietli
poleceniem MsgBox.
Sub rwnanie_kwadratowe()
Dim a As Single, b As Single, c As Single, d As Single
a = [A1]
b = [B1]
c = [C1]
If Then
If Then
[D1]=
[E1]=
Else
End If
Else
End If
End Sub
Odczytaj:
a,b,c
a 0
d0
d = b2 - 4ac
To nie jest
rwnanie
kwadratowe
Nie ma
rozwiza
rzeczywistych
T
T
N
N
a
dbx
2
T.Zibakowski - PROGRAMOWANIE
str. 8
Przetestuj dziaanie makra na przykadowych danych:
a b c wynik
1 1 -2 x1 = 1 lub x2 = -2
0 1 1 To nie jest rwnanie kwadratowe
1 0 1 Nie ma rozwiza rzeczywistych
Zadania domowe
Zaprojektuj makro, ktre rozwizuje ukad dwch rwna liniowych z dwoma
niewiadomymi:
222
111
cybxa
cybxa
Wspczynniki iii cba ,, mona wpisa do zakresu A1:C2. Makro powinno
zbada kiedy mamy do czynienia z ukadem:
- oznaczonym i wtedy makro powinno wypisa rozwizania,
- nieoznaczonym,
- sprzecznym.
Poza tym makro powinno zbada pewne zoliwe przypadki, gdy
wspczynniki iii cba ,, nie wyznaczaj ukadu rwna z dwoma
niewiadomymi. Makro mona przetestowa na nastpujcych danych:
1 1 2 ukad oznaczony
1 -1 0 x = 1 oraz y = 1
1 1 1 ukad nieoznaczony
1 1 1
1 1 1 ukad sprzeczny
1 1 -1
0 1 1 to nie jest ukad rwna
0 1 -1 z dwoma niewiadomymi
Wskazwki:
Jeli 021 aa lub/i 021 bb to nie mamy dwch niewiadomych.
Przyjmijmy 2121 abbaD , 2112 cbcbDx , 2112 cacaDy . Z algebry
wiadomo, e mog zachodzi trzy podstawowe przypadki:
a) jeli 0D to mamy jedno rozwizanie DDx x / i DDy y / .
b) Jeli 00,0 yx DiDD to mamy nieskoczenie wiele rozwiza: dla
dowolnego x, iii bxacy /)( spenia ukad rwna (zakadamy e
przynajmniej jedno 0ib )
c) Jeli 0lub0oraz0 yx DDD to ukad nie ma rozwiza.
T.Zibakowski PROGRA MOWANIE str . 9
W I C Z E N I E 2
Zagadnienia:
Obiekt ActiveCell
Funkcje VBA - tworzenie i uycie w formuach arkusza kalkulacyjnego
Wywoywanie funkcji VBA z poziomu innych funkcji VBA i makr
1. Obiekt ActiveCell
W nowym arkuszu Excela uruchom edytor VBA i wstaw nowy modu:
Insert Module
Zadanie 1
Wpisz w edytorze VBA makro:
Sub