Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Zapytaj Autora przez Internet!............................................................................................................ 5
Rozdzia 1.
Rozdzia 2. Podstawy..................................................................................................................................................... 21
Wymiana danych midzy VBA a skoroszytem. Zmienne i stae ...............................................21
Czytanie i umieszczanie danych ..........................................................................................21
Zmienne i stae .....................................................................................................................24
Deklarowanie zmiennych i ich zasig ........................................................................................26
Zmienne lokalne...................................................................................................................26
Zmienne moduu i zmienne publiczne .................................................................................28
Zmienne tablicowe .....................................................................................................................30
Co bdzie, jeli? .........................................................................................................................32
Ptle............................................................................................................................................35
For Each ...............................................................................................................................36
DoLoop ............................................................................................................................40
Id do, id i wr........................................................................................................................43
Dialog z uytkownikiem ............................................................................................................45
Okna komunikatw ..............................................................................................................45
Okna dialogowe ...................................................................................................................49
Formularze ...........................................................................................................................50
Obsuga bdw..........................................................................................................................54
Makro a funkcja .........................................................................................................................56
Tworzenie funkcji uytkownika ..........................................................................................56
Opisywanie funkcji uytkownika ........................................................................................58
Rozdzia 3. Przykady..................................................................................................................................................... 61
Liczby sownie ...........................................................................................................................61
Wygld zaleny od warunkw ...................................................................................................65
Nawigacja midzy arkuszami.....................................................................................................67
Wspomaganie pracy Excela .......................................................................................................69
Jednorazowe losowanie .......................................................................................................69
Autostart...............................................................................................................................71
Rozdzielanie tekstu ..............................................................................................................72
Poszukiwanie dni tygodnia ..................................................................................................74
Poszukiwanie nazw w skoroszycie ......................................................................................76
Hipercza...................................................................................................................................77
Dodawanie polecenia do menu ............................................................................................82
Matematyka dla dziewiciolatka ................................................................................................84
Tworzenie dodatku Kalendarz w pasku narzdzi.....................................................................103
Generowanie dwiku ..............................................................................................................117
Obliczanie gbi ostroci ..........................................................................................................120
Arkusz ofert..............................................................................................................................130
Kko i krzyyk........................................................................................................................134
2.
Podstawy
Rozdzia
Pierwszy rozdzia podpowiada, jak mona sobie uatwi codzienn prac z Excelem i zautomatyzowa czsto powtarzane czynnoci. Waciwie niezbyt przydaa si wiedza na temat
VBA wystarczyo Ci uruchomienie rejestratora makr i pokazanie, czego oczekujesz od
komputera.
Jak ju zdye si przekona, rejestrator cho bardzo pomocny nie oferuje moliwoci zapisania operacji warunkowej, przypisywania zmiennej czy wywietlenia okien
dialogowych. Dobrze byoby zatem pozna podstawowe polecenia i struktury, odpowiedzialne za wykonywanie operacji, ktrych rejestrowanie jest niemoliwe lub przynajmniej karkoomne.
Wszystkie zamieszczone tu wiczenia moesz znale na stronie http://excel.vip.interia.pl.
22
wiczenie 2.1.
Rozwizanie
1. Otwrz nowy skoroszyt, uruchom edytor VBA (Alt+F11) i wstaw modu
(Insert/Module).
2. W module wprowad nastpujcy kod:
!"
3. Ustaw kursor w obrbie makra i nacinij klawisz F5, aby uruchomi makro.
Wyjanienia
Zastosowane tu zostay instrukcje ptli (struktury ). Poznasz je w dalszych
rozdziaach tego podrcznika. Wpisanie wartoci do komrki dokonywane jest w poniszym
wierszu kodu:
Waciwo
, okrelajca adres komrki, posiada dwa argumenty. Jak wida w instrukcji , zmienne
i
przyjmuj wartoci od do . W poleceniu
Rozdzia 2. Podstawy
23
wiczenie 2.2.
Wskazwki
Zauwa, e w rny sposb wpisano argumenty . Obydwa sposoby s poprawne.
Jak wida, za pomoc moemy zaznacza cae zakresy komrek.
Jako argumentw moemy uy zmiennych (jeeli ich warto bdzie si skada
z liter i cyfr) lub znanych nam ju polece
24
Rysunek 2.3.
W oknie komunikatu
wywietlane s dane
z pierwszych komrek
aktywnego wiersza
i kolumny oraz
z aktywnej komrki
Wskazwki
W pierwszym wierszu procedurze nadawana jest nazwa. Makro zawsze rozpoczyna
si sowem kluczowym , po ktrym podawana jest jego nazwa i ewentualnie
parametry.
W nastpnym wierszu zawarty jest warunek, e dalsze czynnoci bd wykonane
tylko wtedy, gdy aktywna komrka znajduje si nie niej ni w 10. wierszu i nie dalej
ni w 10. kolumnie arkusza.
W kolejnych trzech wierszach z aktywnej (zaznaczonej) komrki oraz pierwszych
komrek kolumny i wiersza dane s pobierane i przypisywane zmiennym. Przypisanie
wartoci komrek zmiennym uatwi Ci zapisanie argumentu dla polecenia
w kolejnym wierszu kodu. Jak wida, pobranie danych z komrek arkusza nie wymaga
adnych polece. Wystarczy operacja przypisania.
Po wywietleniu okna dialogowego (skadni polecenia poznasz w dalszej
czci podrcznika) nastpuje zamknicie sekwencji operacji wykonywanych
po spenieniu warunku pocztkowego ( !").
Ostatnie sowo kluczowe informuje o kocu procedury (makra).
Pozostaje jeszcze pytanie: jak sprawi, aby makro byo uruchamiane po kadym klikniciu
mysz? Decyduj o tym procedury zdarzeniowe, ktrych opis zawarty jest w czwartym
rozdziale podrcznika.
Zmienne i stae
Korzystanie ze staych ma sens wtedy, gdy czsto stosujesz t sam warto w procedurze.
Moesz na przykad za pomoc staej wyrazi cz komunikatu czsto wywietlanego
w oknie dialogowym. Stae definiuje si za pomoc sowa kluczowego :
)9:;
<#0)
=
Niewtpliw zalet staej jest to, e prba jej zmiany w jakikolwiek sposb jest niemoliwa
i koczy si wywietleniem komunikatu o bdzie (patrz rysunek 2.4).
Rozdzia 2. Podstawy
25
Rysunek 2.4.
Prba zmiany
wartoci zadeklarowanej
jako staa niesie
opakane skutki
do 31.12.9999, przy czym data 31 grudnia 1899 jest reprezentowana przez warto ,
1 stycznia 1900 to warto $ itd. Cyfry po przecinku oznaczaj tak jak w arkuszu
Excela czci doby, czyli godzin. Czas przed 31.12.1899 reprezentowany jest
przez liczby ujemne.
Zauwa, e VBA w przeciwiestwie do arkusza Excela moe wykorzystywa daty
sprzed 1 stycznia 1900 roku. Naley jednak pamita, e nawet prawidowo obliczonego
wyniku sprzed roku 1900 nie uda si wywietli w arkuszu roboczym w formacie daty.
Musisz wspomc si formatem tekstowym.
26
Visual Basic nie wymaga deklaracji zmiennych. Jeeli nie dokonasz tej czynnoci, program
przypisze uytym przez Ciebie zmiennym typ 6
.
Po co wic to wszystko?
Deklarowanie zmiennych pozwala programowi panowa nad bdami wynikajcymi
z pomyek (zamierzonych lub nie) przy wprowadzaniu danych przez uytkownika.
Nie jest bowiem moliwe przypisanie acucha tekstowego zmiennej zadeklarowanej
jako na przykad /.
Zmienne typu 6
rezerwuj sobie nawet 20 i wicej razy (!) miejsca ni
zajmowaaby zadeklarowana zmienna innego typu. Jest si wic nad czym zastanowi,
szczeglnie gdy nie pracujesz na superkomputerze, w tle cigasz kilka plikw
z Internetu, korzystasz z czata, a z gonikw sczy si muzyczka z plikw mp3.
Warto deklarowa wszystkie zmienne. Wiem z dowiadczenia, e zdarza si uycie
zmiennej o tej samej nazwie (nadawanej najczciej intuicyjnie) w tym samym
programie do przechowywania rnych danych. Efekty takiego postpowania bywaj
komiczne tylko wtedy, gdy masz wielkie poczucie humoru i duo wolnego czasu.
W przeciwnym wypadku lepiej zajrze do obszaru deklaracji zmiennych i wybra
nieuywan jeszcze nazw.
Zmienne lokalne
Zmienne deklaruje si za pomoc sowa kluczowego /
lub
1. Rnice midzy
sposobami deklaracji zmiennych wyjani ponisze wiczenie.
Rozdzia 2. Podstawy
27
wiczenie 2.4.
Wyjanienia
Pierwsze trzy wiersze kodu to nagwek procedury i deklaracje zmiennych.
Nastpny wiersz jest komentarzem. Na jego pocztku znajduje si apostrof,
wic zawarto wiersza nie jest analizowana przez program.
W pitym wierszu nastpuje przypisanie wartoci zmiennym. Zmienna przyjmuje
warto %, a zmienna warto zmiennej #
7
. Zmienna przyjmuje warto
, bowiem #
7
nie jest znany przy pierwszym uruchomieniu makra.
Std w wierszu szstym warto zmiennej #
7
wynosi %8,
czyli % co jest widoczne w oknie informacyjnym na rysunku 2.3.
W wierszach 7. 9. powysze czynnoci s powtarzane w stosunku do kolejnych
zmiennych.
W wierszu 10. zmienna jest zwikszana o po kadym wykonaniu programu.
Warto pocztkowa zmiennej nie zostaa ustalona, a jej typ to !,
wic program przyj dla niej pocztkow warto zero.
Przy kolejnym uruchomieniu makra zmiennym zadeklarowanym sowem kluczowym
zostaj przywrcone domylne wartoci pocztkowe. A zatem wartoci zmiennych
i #
7
ponownie wynosz zero.
28
Utwrz dwa makra: jedno odczytujce dane z arkusza, a drugie wywietlajce odczytane
dane w oknie komunikatu. Przeka wartoci midzy makrami za pomoc zmiennych.
Rozwizanie
$
"
<
)9:;
<*#)
!"
6(7 8
<
!"
Wyjanienia
Makro pobierz_dane odczytuje warto komrki i przypisuje j zmiennej
79
.
Dodatkowo ustalana jest warto zmiennej , ktra jest wykorzystywana przez
makro komunikat.
Po nadaniu wartoci wykonywane jest makro komunikat, majce na celu wywietlenie
na ekranie wartoci zmiennych.
Rozdzia 2. Podstawy
29
Wpisz do komrki dowoln warto i uruchom makro pobierz_dane. Jego efekty ilustruje rysunek 2.6.
Rysunek 2.6.
Mimo e skadniowo
wszystko jest
w porzdku,
nie takiego efektu
si spodziewalimy
W oknie komunikatu nie zostay wywietlone adne informacje, poniewa nie zadeklarowano zmiennych na poziomie moduu. VBA uzna zatem, e ich wartoci obowizuj
tylko w obrbie makra, w ktrym zostay uyte.
Aby moliwe byo przekazywanie wartoci zmiennych midzy makrami (funkcjami),
musisz je zadeklarowa na poziomie moduu. Dokonuje si tego na pocztku moduu,
przed pierwszym sowem lub "1
. Tak zadeklarowane zmienne nazywamy (jak
nietrudno si domyli) zmiennymi moduu. Kompletna zawarto moduu powinna wic
wyglda tak:
C$! $
?
<
$
"
<
)9:;
<*#)
#:
!"
#:
6(7 8
<
!"
Komentarz
Makro wywietl moe oczywicie by uruchamiane przez uytkownika,
z tym e nie ma on moliwoci podania wymaganych przez nie zmiennych.
Najbardziej funkcjonalnym jego wykorzystaniem bdzie ustalanie wartoci
zmiennych w poszczeglnych makrach i wywoywanie ich nazw tak, jak zostao
to przedstawione w powyszym przykadzie. Masz wic raz napisane makro,
ktre moesz przywoywa w dowolnym miejscu programu.
Polecenie 2:
:
1
wymusza deklarowanie wszystkich zmiennych.
Jeeli podczas wykonywania makra zostanie wykryta nie zadeklarowana zmienna,
spowoduje to bd programu (patrz rysunek 2.7).
Rysunek 2.7.
Polecenie Option Explicit
wymusza porzdek
w kodzie Twojego programu.
adna nie zadeklarowana
zmienna nie ma racji bytu
30