Professional Documents
Culture Documents
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis treci
Wprowadzenie .................................................................................... 15
Czym jest makro? .....................................................................................................................16
Co jzyk VBA ma wsplnego z makrami? .................................................................................17
Informacja od polskiego wydawcy ...........................................................................................17
Co powinno si wiedzie przed przeczytaniem ksiki? ...........................................................17
Zawarto ksiki .....................................................................................................................18
Specjalne elementy ksiki ......................................................................................................19
Spis treci
Spis treci
Spis treci
III
10
Spis treci
11
12
IV DODATKI
A Instrukcje jzyka VBA ..........................................................................423
B Funkcje jzyka VBA .............................................................................429
C Funkcje arkuszowe Excela w VBA..........................................................441
Skorowidz ..........................................................................................449
Aby uatwi Czytelnikowi urzeczywistnienie powyszych korzyci i wielu innych rzeczy, w niniejszym
rozdziale zaprezentowano podstawy dotyczce pisania prostych procedur i funkcji, a take wyjaniono,
jak obsugiwa edytor VBA (ang. Visual Basic Editor),
bdcy narzdziem, ktre jzyk VBA oferuje do rcznego tworzenia makr. Rozdzia ten stanowi przygotowanie do kilku nastpnych rozdziaw, w ktrych
dokadniej omwiono szczegy jzyka VBA.
2
W TYM ROZDZIALE:
Uaktywnianie karty Deweloper
interfejsu Wstka ................................. 36
Uruchamianie edytora VBA ..................... 36
Omwienie edytora VBA ......................... 37
Procedury VBA ....................................... 39
Tworzenie makra polece ....................... 40
Tworzenie funkcji uytkownika ............... 44
Wykorzystanie technologii IntelliSense ... 48
Zamykanie edytora Visual Basic Editor ..... 51
36
Rozdzia 2
37
nowicie Excel). Rysunek 2.2 prezentuje nowe okno, ktre jest otwierane (trzeba jednak mie
wiadomo, e okno, ktre si zobaczy, moe si nieznacznie rni od pokazanego poniej).
Rysunek 2.2.
W oknie edytora VBA
mona poprawia
i edytowa makra
W S K AZ WK A
Okno edytora VBA mona rwnie wywietli przez wcinicie kombinacji klawiszy Alt+F11. W rzeczywistoci kombinacja ta powoduje przeczanie midzy edytorem VBA i aktualnie uywanym programem pakietu Office.
38
Rozdzia 2
1. W oknie Project Explorer widocznym z lewej strony okna edytora VBA klikn projekt,
w ktrym zamierza si umieci nowy modu. Oto kilka uwag, o ktrych trzeba pamita:
x
Jeli w Wordzie cay czas maj by dostpne makra nowego moduu, naley klikn
projekt Normal (w efekcie modu zostanie dodany do szablonu Normal).
Jeeli w Excelu cay czas maj by dostpne makra nowego moduu, naley klikn
projekt PERSONAL.XLSB (w efekcie modu zostanie dodany do skoroszytu PERSONAL).
Trzeba pamita, e nie zobaczy si projektu PERSONAL.XLSB, dopki w skoroszycie Skoroszyt makr osobistych nie zapisze si co
najmniej jednego zarejestrowanego makra (naley zapozna si z punktem Rejestrowanie makra Excela na stronie 27).
x
2. Wybra pozycj Insert/Module. Edytor VBA utworzy nowy modu i otworzy go (rysunek 2.3).
Rysunek 2.3.
Nowy modu dodany
do projektu
Procedury VBA
39
Procedury VBA
Zanim Czytelnik zacznie pisa wasne makra, powinien powici chwil na zrozumienie
tego, co waciwie bdzie tworzy. Podczas rcznego tworzenia kodu VBA (lub rejestrowania
makra zgodnie z opisem zamieszczonym w rozdziale 1.) to, co si uzyskuje, jest okrelane
mianem procedury. Oglnie rzecz biorc, w jzyku VBA procedura jest zbiorem powizanych ze sob instrukcji, ktre tworz modu i realizuj okrelonego typu zadanie (instrukcja
jest poleceniem nakazujcym interpreterowi jzyka VBA wykonanie konkretnego zadania).
Na potrzeby ksiki uyto dwch odmian procedury VBA makr polece i funkcji uytkownika. Oto podsumowanie rnic:
Q
Makro polece to najczciej uywany typ procedury. Zwykle makro to zawiera instrukcje
odpowiadajce opcjom interfejsu Wstka i innym poleceniom programu. Cech wyrniajc makra polece jest to, e podobnie do zwykych polece aplikacji, oddziauj
na swoje otoczenie (przykadowo, w przypadku Worda oznacza to, e makro ma wpyw
na biecy dokument, fragment tekstu itp.). Niezalenie od tego, czy otwiera si dokument, formatuje tekst lub wstawia akapit, makra polece wprowadzaj zmiany (naley
zapozna si z poniszym podrozdziaem Tworzenie makra polece).
Funkcje uytkownika dziaaj tak jak wbudowane funkcje programu. Ich cech charakterystyczn jest to, e akceptuj wartoci wejciowe, a nastpnie przetwarzaj je i zwracaj
wynik (naley zapozna si z podrozdziaem Tworzenie funkcji uytkownika).
40
Rozdzia 2
41
4. Przy uyciu pola tekstowego Name okreli nazw makra. Oto kilka oglnych wytycznych, ktre musz by przestrzegane:
x
7. Midzy wierszami Public Sub i End Sub wprowadzi instrukcje VBA, ktre maj
znale si w makrze. Aby wstawi nowy wiersz, po wpisaniu kadej instrukcji naley
wcisn klawisz Enter.
Rysunek 2.5 prezentuje prosty przykad, w ktrym zastosowano tylko jedn instrukcj VBA.
Oto ona:
MsgBox "Witaj wiecie!"
Rysunek 2.5.
Przykadowe makro
gotowe do wykonania
Instrukcja w przykadzie zawiera funkcj jzyka VBA o nazwie MsgBox, ktra suy do wywietlania uytkownikowi prostego okna dialogowego (nazwa MsgBox jest skrtem od sw Message
Box). Aby poprawi czytelno, przed wpisaniem instrukcji jednokrotnie wcisnem klawisz
Tab. Wicej informacji na temat wci instrukcji mona znale w dalszej czci rozdziau.
U WAG A
Kod rdowy zamieszczony w przykadach tego rozdziau mona znale pod adresem ftp://ftp.helion.
pl/przyklady/ofjvba.zip
Aby uzyska szczegy dotyczce funkcji MsgBox, naley zapozna si z punktem Pobieranie danych wejciowych za pomoc
42
Rozdzia 2
W oknie aplikacji pakietu Office z menu Deweloper naley wybra pozycj Makra
(lub wcisn kombinacj klawiszy Alt+F8), eby otworzy okno dialogowe Makro.
W razie potrzeby za pomoc listy Makra w naley zaznaczy dokument zawierajcy
makro, ktrego zamierza si uy. W dalszej kolejnoci z listy Nazwa makra naley
wybra makro i klikn przycisk Uruchom.
U WAG A
Aby przej bezporednio do dowolnego makra polece, ktre zamierza si zmodyfikowa za pomoc edytora VBA, mona rwnie skorzysta z okna dialogowego Makro. Z listy Nazwa makra
naley wybra makro, a nastpnie klikn przycisk Edycja.
Jeli jedn z powyszych metod zastosuje si dla przykadowego makra pokazanego na rysunku 2.5, pojawi si okno dialogowe widoczne na rysunku 2.6. W celu zamknicia okna
naley klikn przycisk OK.
Rysunek 2.6.
Po uruchomieniu makra
pokazanego na rysunku 2.5
zostanie wywietlone to
okno dialogowe
43
jzyka VBA nie przetwarza komentarzy, ktre s dodawane przez programist, eby sobie
lub innym osobom uatwi analizowanie kodu lub umoliwi przeledzenie dziaania procedury. Rysunek 2.7 przedstawia prosty przykad procedury z komentarzami. Komentarze
s instrukcjami rozpoczynajcymi si od znaku '.
Rysunek 2.7.
Procedura VBA
z komentarzami
opisujcymi j i jej kod
U WAG A
Na tym pocztkowym etapie kariery programisty uywajcego jzyka VBA Czytelnik powinien sobie
uzmysowi korzyci wynikajce ze stosowania starannego i uporzdkowanego stylu programowania.
Cho ludzie potrafi radzi sobie w chaotycznych rodowiskach i faktycznie maj z nimi do czynienia,
s o wiele mdrzejsi i bezgranicznie bardziej intuicyjni ni jakiekolwiek makro. Procedury przynale do wiata cechujcego si prost i niezmienn logik. Programowanie zawsze bdzie znacznie
prostsze, jeli logice tej bdzie towarzyszy porzdek. Na szczcie s tylko dwie rzeczy, ktre trzeba zrobi, eby uzyska porzdek wystarczajcy do bycia dobrym programist. Pierwsz rzecz jest
wykonywanie wci w kodzie, a drug stosowanie komentarzy w odpowiedniej iloci. Kwestia
komentarzy jest szczeglnie istotna. Kada procedura bdzie znacznie atwiejsza do odczytania
(zwaszcza wtedy, gdy kodu nie przegldano przez kilka miesicy), jeli w jej kodzie swobodnie
bdzie si umieszcza komentarze. Ponadto dodawanie komentarzy na bieco podczas tworzenia
kodu jest znakomitym sposobem kontrolowania wasnych myli i przeskokw logicznych.
Kadorazowo po wciniciu klawisza Enter interpreter jzyka VBA analizuje wanie wprowadzony wiersz i realizuje nastpujce trzy zadania:
Q
Sprawdzane s bdy skadni, czyli bdy wystpujce, gdy sowo wprowadzi si z literwk, niepoprawnie wpisze si nazw funkcji itp. Interpreter jzyka VBA wyrnia bd skadni przez wywietlenie okna dialogowego informujcego o szczegach
problemu lub przez niedokonywanie konwersji sowa (zmiana wielkoci znakw lub
formatowanie przy uyciu koloru).
44
Rozdzia 2
W S K AZ WK A
Jeeli sowa kluczowe jzyka VBA zawsze wprowadza si przy zastosowaniu maych znakw, literwki bdzie mona wykry, szukajc tych sw, ktre nie zostay rozpoznane przez interpreter
(inaczej mwic, s to sowa, w ktrych wielko znakw nie zostaa zmieniona).
Sowo to jest powodem, dla ktrego funkcje uytkownika s te nazywane procedurami funkcyjnymi.
45
46
Rozdzia 2
Rysunek 2.8 prezentuje przykadow funkcj uytkownika, ktra oblicza i zwraca wynik.
W tym celu uywa nastpujcej instrukcji VBA:
GrossMargin = (Sales - Expenses) / Sales
Rysunek 2.8.
Przykadowa funkcja
gotowa do zastosowania
w innych procedurach
warto Expenses, a nastpnie wynik dzieli przez warto Sales, eby zwrci warto
mary brutto (GrossMargin).
Zastosowanie funkcji
Funkcji uytkownika nie mona uruchamia w taki sam sposb jak makra polece. Funkcji
takiej naley uy jako czci skadowej makra polece (a nawet innej funkcji) lub aplikacji.
W celu zastosowania funkcji w makrze polece naley utworzy oddzieln instrukcj VBA,
ktra zawiera nazw funkcji i wszelkie wymagane przez ni argumenty (jest to okrelane
mianem wywoywania funkcji). Oto prosty przykad:
Public Sub GrossMarginTest1()
MsgBox GrossMargin (100000, 90000)
End Sub
Procedura Sub wywouje funkcj GrossMargin i przekazuje jej wartoci 100000 i 90000
odpowiednio dla argumentw Sales i Expenses. Funkcja MsgBox wywietla wynik w oknie
dialogowym.
47
Rysunek 2.9.
Funkcja GrossMargin
uyta w formule
arkuszowej Excela
48
Rozdzia 2
Rysunek 2.10.
W oknie dialogowym
Wstawianie funkcji naley
wybra kategori
Uytkownika, eby ujrze
list istniejcych funkcji
uytkownika
49
rysunku 2.11, interpreter jzyka VBA udostpnia menu podrczne. Jego pozycjami s waciwoci i metody powizane z obiektem Application. Oto metody umoliwiajce korzystanie z tego menu:
Q
W celu wywietlenia rnych pozycji menu naley kontynuowa wprowadzanie znakw. Jeli na przykad w Excelu wpisze si cap, interpreter jzyka VBA wyrni na
licie pozycj Caption.
Najpierw naley zaznaczy pozycj (przez kliknicie lub przy uyciu klawiszy strzaek
skierowanych w gr i w d), a nastpnie wcisn klawisz Tab, eby j wstawi i kontynuowa edycj tej samej instrukcji.
Najpierw naley zaznaczy pozycj, po czym wcisn klawisz Enter, aby j wstawi
i przej do nowego wiersza.
W celu ukrycia menu bez wstawiania jego pozycji naley wcisn klawisz Esc.
Rysunek 2.11.
Podczas wprowadzania
znakw technologia
IntelliSense wywietla
dostpne waciwoci
i metody
Warto zauway, e jeli w celu ukrycia menu podrcznego wcinie si klawisz Esc, interpreter
jzyka VBA nie wywietli go ponownie dla tego samego obiektu. Jeeli zamierza si jeszcze
raz skorzysta z tego menu, z menu Edit naley wybra pozycj List Properties/Methods (lub
wcisn kombinacj klawiszy Ctrl+J).
Lista staych
Technologia IntelliSense oferuje polecenie List Constants, ktre przypomina polecenie List
Properties/Methods. W przypadku tej funkcji pojawia si menu podrczne zawierajce list
dostpnych staych powizanych z waciwoci lub metod (staa jest niezmienn wartoci
odpowiadajc okrelonemu stanowi lub wynikowi; wicej na temat staych mona znale
w rozdziale 3.). W module mona umieci nastpujcy przykadowy wiersz:
Application.ActiveWindow.WindowState=
50
Rozdzia 2
Rysunek 2.12 pokazuje menu podrczne pojawiajce si w Excelu. Menu zawiera list staych
odpowiadajcych rnym ustawieniom waciwoci WindowState okna. Przykadowo, w celu
maksymalizacji okna naley zastosowa sta xlMaximized. Korzystajc z tej listy, naley
uy tych samych metod co w przypadku polecenia List Properties/Methods.
Rysunek 2.12.
Polecenie List Constants
w akcji
Jeli zamierza si rcznie wywietli list, z menu Edit naley wybra pozycj List Constants
(lub wcisn kombinacj klawiszy Ctrl+Shift+J).
Informacja o parametrach
Wczeniej wspomniano, e na potrzeby wewntrznych oblicze funkcja uytkownika zwykle
pobiera jeden lub wicej argumentw (parametrw). Wiele wbudowanych funkcji i instrukcji
jzyka VBA rwnie uywa parametrw. Cz tych funkcji i instrukcji stosuje nawet tuzin
niezalenych argumentw! Poniewa oczywicie skadnia takich instrukcji jest bardzo zoona,
atwo popeni pomyk. Aby pomc podczas wprowadzania funkcji uytkownika lub jednej
z wbudowanych funkcji czy instrukcji jzyka VBA, technologia IntelliSense oferuje polecenie
Parameter Info. Jak nazwa wskazuje, funkcja ta wywietla informacje dotyczce parametrw,
ktre mog by uyte w funkcji. W celu zapoznania si z przykadem w dowolnym module
Excela naley wpisa nastpujcy tekst:
activecell.fomula=pmt(
Biecy argument jest pogrubiany. Gdy wprowadzi si argument, a nastpnie przecinek, interpreter jzyka VBA pogrubi nastpny argument.
51
Rysunek 2.13.
Polecenie Parameter Info
pokazuje argumenty
biecej funkcji lub
instrukcji
Rne instrukcje As (na przykad As Double) okrelaj typ danych kadego argumentu.
Typy danych zostan omwione w nastpnym rozdziale. Na tym etapie naley wiedzie,
e identyfikuj rodzaj danych powizany z kadym argumentem (tekst, wartoci
liczbowe itp.).
Oczywicie technologia IntelliSense umoliwia te rczne wywietlenie informacji o parametrach. Wystarczy z menu Edit wybra pozycj Parameter Info (lub wcisn kombinacj
klawiszy Ctrl+Shift+I).
Uzupenianie sw kluczowych
Ostatnie z omawianych polece technologii IntelliSense nosi nazw Complete Word. Powoduje ono, e interpreter jzyka VBA uzupenia sowo kluczowe, ktre zaczto wpisywa. Dziki
temu mona troch odciy palce. Aby skorzysta z polecenia Complete Word, najpierw
naley wprowadzi kilka liter sowa kluczowego, a nastpnie z menu Edit wybra pozycj
Complete Word (lub wcisn kombinacj klawisza Ctrl i spacji).
Jeeli wprowadzono liczb liter wystarczajc do identyfikacji unikatowego sowa kluczowego,
technologia IntelliSense uzupeni je. Jeli na przykad wpisano appl i wybrano pozycj
Complete Word, technologia IntelliSense zamieni ten acuch na sowo Application. Gdy
jednak istnieje wiele sw kluczowych rozpoczynajcych si od wprowadzonych liter,
technologia IntelliSense wywietli menu podrczne, z ktrego mona wybra dane sowo.
52
Rozdzia 2
Z menu File naley wybra polecenie Close and Return to Aplikacja. W miejscu acucha
Aplikacja bdzie widoczna nazwa uywanego programu (na przykad Microsoft Excel).
Odnoniki
2
Aby dowiedzie si wicej na temat stosowania zmiennych w kodzie VBA, naley zajrze do rozdziau 3., Zmienne programw na stronie 53.
W celu uzyskania dokadnych informacji na temat wyrae naley przej do rozdziau 4.,
Tworzenie wyrae jzyka VBA na stronie 73.