You are on page 1of 29

Microsoft Office 2007.

Jzyk VBA i makra.


Rozwizania w biznesie
Autor: Paul McFedries
Tumaczenie: Piotr Pilch
ISBN: 978-83-246-1349-6
Tytu oryginau: VBA for the 2007 Microsoft(R)
Office System (Business Solutions)
Format: 170x230, stron: 472

Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl

Usprawnij dziaanie najpopularniejszego pakietu biurowego


Jak zautomatyzowa najczciej wykonywane czynnoci?
W jaki sposb tworzy niestandardowe okna dialogowe i elementy interfejsu
uytkownika?
Jak wykrywa bdy w aplikacji VBA i usuwa je?
Moliwoci i funkcjonalno pakietu Office 2007 s ogromne, jednak korzystanie
z wielu z nich wymaga od uytkownikw nieustannego powtarzania tych samych
czynnoci. Rczne wybieranie sekwencji polece z menu, zaznaczanie fragmentw tekstu
lub zakresu komrek, przypisywanie regu do filtrowania poczty to wszystko jest
pracochonne i z czasem staje si uciliwe dla osoby korzystajcej z Office 2007.
Na szczcie, twrcy pakietu zaimplementowali w nim niezwykle przydatn funkcj
tworzenia i wykorzystywania makr, czyli zarejestrowanych sekwencji operacji, ktre mona
wywoywa tak samo jak zwyke polecenia z menu. Kady z programw wchodzcych
w skad Officea posiada tak moliwo, a stosowanie jej ley w zakresie moliwoci
wszystkich uytkownikw.
Ksika Office 2007. Jzyk VBA i makra. Rozwizania w biznesie to podrcznik
dla wszystkich, ktrzy chc przyspieszy i usprawni prac z tym pakietem biurowym.
Czytajc j, nauczysz si tworzy makra i korzysta z jzyka Visual Basic for Applications,
w ktrym s pisane. Dowiesz si, z jakich elementw skada si makro, jak uruchomi
edytor VBA i w jaki sposb wykorzystywa w makrach rne polecenia. Poznasz techniki
budowania makr dla Worda, Excela, PowerPointa i Outlooka. Przeczytasz take o tworzeniu
niestandardowych okien dialogowych, modyfikowaniu interfejsu uytkownika aplikacji
z pakietu Office, wyszukiwaniu bdw w kodzie rdowym i usuwaniu ich.
Rejestrowanie i uruchamianie makr
Korzystanie z edytora VBA
Elementy jzyka VBA
Obiekty Office w programach VBA
Przetwarzanie tekstu za pomoc makr
Obrbka zakresw komrek w Excelu
Makra dla PowerPointa i Accessa
Obsuga wiadomoci pocztowych w Outlooku
Tworzenie okien dialogowych i formularzy
Modyfikowanie interfejsu Wstka pakietu Office 2007
Podzia projektu na moduy
Wykrywanie i usuwanie bdw
Korzystaj z makropolece i zwiksz efektywno swojej pracy!

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

I PODSTAWY JZYKA VBA


1 Tworzenie i uruchamianie zarejestrowanych makr ................................. 23
Rejestrowanie makra VBA ........................................................................................................25
Rejestrowanie makra Worda ............................................................................................25
Rejestrowanie makra Excela .............................................................................................27
Uruchamianie zarejestrowanego makra ..................................................................................29
Zastosowanie listy Nazwa makra ......................................................................................29
Przypisywanie klawiszy skrtu zarejestrowanym makrom Worda ...................................30
Przypisywanie klawiszy skrtu zarejestrowanym makrom Excela ....................................31
Tworzenie przycisku paska narzdzi Szybki dostp dla zarejestrowanego makra ............32
Odnoniki ..........................................................................................................................34

2 Tworzenie wasnych makr .................................................................... 35


Uaktywnianie karty Deweloper interfejsu Wstka .................................................................36
Uruchamianie edytora VBA ......................................................................................................36
Omwienie edytora VBA ..........................................................................................................37
Tworzenie nowego moduu ..............................................................................................38
Otwieranie istniejcego moduu .......................................................................................39
Procedury VBA .........................................................................................................................39
Tworzenie makra polece ........................................................................................................40
Pisanie makra polece ......................................................................................................40
Uruchamianie makra polece ...........................................................................................42
Wprowadzanie instrukcji VBA ...........................................................................................42
Tworzenie funkcji uytkownika ................................................................................................44
Oglne informacje na temat funkcji uytkownika ............................................................44
Pisanie funkcji uytkownika .............................................................................................45
Zastosowanie funkcji ........................................................................................................46
Wykorzystanie technologii IntelliSense ...................................................................................48
Lista waciwoci lub metod .............................................................................................48
Lista staych ......................................................................................................................49

Microsoft Office 2007 PL. Jzyk VBA i makra. Rozwizania w biznesie

Informacja o parametrach ................................................................................................ 50


Uzupenianie sw kluczowych ......................................................................................... 51
Zamykanie edytora Visual Basic Editor .................................................................................... 51
Odnoniki ......................................................................................................................... 52

3 Zmienne programw ............................................................................53


Deklarowanie zmiennych ........................................................................................................ 53
Unikanie bdw zwizanych ze zmiennymi ........................................................................... 55
Typy danych zmiennych .......................................................................................................... 56
Zmiana domylnego typu danych .................................................................................... 59
Tworzenie typw danych uytkownika ............................................................................ 60
Zastosowanie zmiennych tablicowych .................................................................................... 61
Tablice dynamiczne .......................................................................................................... 62
Tablice wielowymiarowe ................................................................................................. 64
Praca ze staymi ....................................................................................................................... 65
Uycie wbudowanych staych .......................................................................................... 65
Tworzenie staych uytkownika ....................................................................................... 65
Przechowywanie w zmiennej danych wejciowych uytkownika .............................................. 66
Pobieranie danych wejciowych za pomoc funkcji MsgBox ............................................ 66
Pobieranie danych wejciowych za pomoc funkcji InputBox .......................................... 70
Odnoniki ......................................................................................................................... 72

4 Tworzenie wyrae jzyka VBA ..............................................................73


Oglne informacje na temat wyrae ...................................................................................... 73
Stosowanie operatorw jzyka VBA ........................................................................................ 74
Operatory arytmetyczne ................................................................................................... 75
Operator zczania ............................................................................................................ 76
Operatory porwnania ..................................................................................................... 77
Operatory logiczne ........................................................................................................... 77
Kolejno stosowania operatorw ........................................................................................... 78
Hierarchia wanoci operatorw ...................................................................................... 78
Kontrolowanie hierarchii wanoci operatorw ............................................................... 79
Przetwarzanie wyrae numerycznych ................................................................................... 81
Funkcje matematyczne jzyka VBA .................................................................................. 81
Funkcje finansowe jzyka VBA ......................................................................................... 83
Przetwarzanie wyrae acuchowych .................................................................................... 84
Przetwarzanie wyrae logicznych .......................................................................................... 87
Operator And .................................................................................................................... 88
Operator Or ....................................................................................................................... 88
Operator Xor ..................................................................................................................... 88
Operator Not ..................................................................................................................... 89
Przetwarzanie wyrae dat ..................................................................................................... 89
Odnoniki ......................................................................................................................... 92

Spis treci

5 Praca z obiektami ................................................................................ 93


Czym jest obiekt? .....................................................................................................................93
Hierarchia obiektw .................................................................................................................95
Stosowanie waciwoci obiektw ...........................................................................................95
Ustawianie wartoci waciwoci ......................................................................................97
Zwracanie wartoci waciwoci .......................................................................................97
Stosowanie metod obiektw ...................................................................................................98
Obsuga zdarze obiektw .......................................................................................................99
Zastosowanie zbiorw obiektw ............................................................................................101
Przypisywanie obiektu zmiennej ...........................................................................................101
Operator Is ..............................................................................................................................103
Praca z wieloma waciwociami lub metodami ....................................................................103
Przykad obiekt Application .............................................................................................105
Wywietlanie komunikatu na pasku stanu .....................................................................105
Zmiana nagwka paska tytuu .......................................................................................106
Praca z oknem aplikacji ...................................................................................................106
Uzyskiwanie dostpu do wbudowanych okien dialogowych aplikacji ............................107
Sprawdzanie pisowni ......................................................................................................111
Przykad obiekt Window ..................................................................................................112
Zastosowanie obiektu Window ......................................................................................112
Otwieranie nowego okna ................................................................................................113
Aktywowanie okna .........................................................................................................113
Odnoniki ........................................................................................................................113

6 Kontrolowanie kodu VBA .....................................................................115


Kod podejmujcy decyzje .......................................................................................................115
Zastosowanie instrukcji IfThen do okrelania prawdy lub faszu ......................................116
Zastosowanie instrukcji IfThenElse do obsugi wartoci wynikowej False ...................117
Podejmowanie wielu decyzji ..................................................................................................119
Zastosowanie operatorw And i Or .................................................................................119
Zastosowanie wielu instrukcji IfThenElse .............................................................120
Zastosowanie instrukcji Select Case ................................................................................122
Funkcje podejmujce decyzje .................................................................................................127
Funkcja IIf .......................................................................................................................127
Funkcja Choose ...............................................................................................................128
Funkcja Switch ................................................................................................................129
Kod z ptl .............................................................................................................................130
Zastosowanie struktur DoLoop .........................................................................................131
Zastosowanie ptli ForNext ...............................................................................................133

Microsoft Office 2007 PL. Jzyk VBA i makra. Rozwizania w biznesie

Zastosowanie ptli For EachNext ...................................................................................... 135


Koczenie ptli za pomoc instrukcji Exit For lub Exit Do ...................................................... 137
Stosowanie wci w celu poprawienia czytelnoci kodu ....................................................... 138
Odnoniki ....................................................................................................................... 139

II WYKORZYSTANIE JZYKA VBA PODCZAS PRACY


7 Programowanie w Wordzie .................................................................143
Praca z dokumentami ............................................................................................................ 143
Zastosowanie obiektu Document ................................................................................... 143
Otwieranie dokumentu .................................................................................................. 144
Obiekt RecentFiles .......................................................................................................... 145
Tworzenie nowego dokumentu ..................................................................................... 146
Zapisywanie dokumentu ................................................................................................ 147
Zamykanie dokumentu .................................................................................................. 150
Zamykanie wszystkich otwartych dokumentw ............................................................ 150
Przykad archiwizowanie dokumentu ...................................................................... 151
Praca z tekstem ...................................................................................................................... 154
Zastosowanie obiektu Range ................................................................................................. 155
Metoda Range ................................................................................................................ 155
Waciwo Range .......................................................................................................... 155
Odczytywanie i modyfikowanie tekstu zakresu .............................................................. 156
Formatowanie tekstu ..................................................................................................... 156
Wstawianie tekstu .......................................................................................................... 157
Usuwanie tekstu ............................................................................................................. 159
Zastosowanie obiektu Selection ............................................................................................ 160
Sprawdzanie typu zaznaczenia ...................................................................................... 160
Przenoszenie punktu wstawiania ................................................................................... 161
Rozszerzanie zaznaczenia ............................................................................................... 162
Redukowanie zaznaczenia ............................................................................................. 163
Zastosowanie obiektu Words ................................................................................................. 164
Zastosowanie obiektu Sentences ........................................................................................... 165
Wywietlanie liczby sw zdania .................................................................................... 165
Programowanie z wykorzystaniem obiektu Paragraph ......................................................... 167
Odnoniki ....................................................................................................................... 170

8 Programowanie w Excelu ....................................................................171


Obiekt Application Excela ...................................................................................................... 171
Korzystanie z funkcji arkuszowych ................................................................................. 171
Ponowne wykonywanie oblicze w skoroszytach .......................................................... 172
Zamiana acucha na obiekt ........................................................................................... 172

Spis treci

Wstrzymywanie aktywnego makra ................................................................................173


Metody podobne do zdarze ..........................................................................................174
Przetwarzanie obiektw Workbook .......................................................................................179
Okrelanie obiektu Workbook .........................................................................................179
Otwieranie skoroszytu ....................................................................................................179
Tworzenie nowego skoroszytu .......................................................................................180
Okrelanie liczby arkuszy nowego skoroszytu .................................................................180
Zapisywanie kadego otwartego skoroszytu ..................................................................181
Zamykanie skoroszytu ....................................................................................................183
Praca z obiektami Worksheet .................................................................................................184
Okrelanie obiektu Worksheet ........................................................................................184
Tworzenie nowego arkusza ............................................................................................184
Waciwoci obiektu Worksheet .....................................................................................185
Metody obiektu Worksheet ............................................................................................185
Zastosowanie obiektw Range ..............................................................................................186
Zwracanie obiektu Range ...............................................................................................187
Zaznaczanie komrki lub zakresu ...................................................................................192
Definiowanie nazwy zakresu ..........................................................................................197
Umieszczanie danych w zakresie ....................................................................................197
Zwracanie informacji dotyczcych zakresu .....................................................................198
Zmiana rozmiaru zakresu ................................................................................................199
Odnoniki ........................................................................................................................199

9 Programowanie w programie PowerPoint ............................................201


Obiekt Presentation PowerPointa ..........................................................................................201
Okrelanie obiektu Presentation .....................................................................................201
Otwieranie prezentacji ....................................................................................................202
Tworzenie nowego dokumentu ......................................................................................202
Waciwoci obiektu Presentation ..................................................................................203
Metody obiektu Presentation .........................................................................................203
Aplikacja objaniajca onglowanie ...............................................................................205
Zastosowanie obiektw slajdw prezentacji PowerPointa ....................................................207
Okrelanie slajdu .............................................................................................................207
Tworzenie nowego slajdu ...............................................................................................208
Wstawianie slajdw z pliku ............................................................................................208
Waciwoci obiektu Slide ...............................................................................................209
Aplikacja objaniajca onglowanie: tworzenie slajdw ................................................210
Metody obiektu Slide ......................................................................................................211
Zastosowanie obiektw Shape ...............................................................................................211
Okrelanie obiektu Shape ...............................................................................................211
Dodawanie ksztatw do slajdu ......................................................................................212
Wybrane waciwoci obiektu Shape ..............................................................................215
Aplikacja objaniajca onglowanie: tworzenie slajdu tytuowego ................................218

Microsoft Office 2007 PL. Jzyk VBA i makra. Rozwizania w biznesie

Wybrane metody obiektu Shape .................................................................................... 219


Aplikacja objaniajca onglowanie: tworzenie instrukcji ............................................. 220
Obsuga pokazu slajdw ........................................................................................................ 224
Przejcia podczas pokazu slajdw .................................................................................. 224
Ustawienia pokazu slajdw ............................................................................................ 225
Uruchamianie pokazu slajdw ....................................................................................... 226
Odnoniki ....................................................................................................................... 226

10 Programowanie baz danych Accessa ....................................................227


Przygotowanie: na pocztek dwa kroki ................................................................................. 228
Krok 1.: Utworzenie odwoania ...................................................................................... 228
Krok 2.: Tworzenie rda danych ................................................................................... 229
Praca z rekordami bazy danych: otwieranie zestawu rekordw ............................................ 231
Otwieranie zestawu rekordw znajdujcego si w tabeli .............................................. 232
Otwieranie zestawu rekordw: pena skadnia metody Open ........................................ 233
Otwieranie zestawu rekordw za pomoc instrukcji SELECT .......................................... 235
Praca z zestawem rekordw .................................................................................................. 237
Uzyskanie dostpu do danych zestawu rekordw .......................................................... 237
Poruszanie si w obrbie rekordw ................................................................................ 239
Szukanie rekordu ............................................................................................................ 242
Modyfikowanie rekordu ................................................................................................. 244
Dodawanie nowego rekordu .......................................................................................... 245
Usuwanie rekordu .......................................................................................................... 247
Pobieranie danych do Excela ................................................................................................. 248
Pobranie wartoci wybranego pola ................................................................................ 249
Pobranie jednego lub wikszej liczby caych rekordw .................................................. 249
Pobranie caego zestawu rekordw ............................................................................... 251
Odnoniki ....................................................................................................................... 253

11 Programowanie w programie Outlook .................................................255


Wprowadzenie ...................................................................................................................... 255
Praca z folderami Outlooka .................................................................................................... 256
Odwoywanie do domylnych folderw ......................................................................... 256
Zastosowanie waciwoci Folders ................................................................................. 256
danie od uytkownika wybrania folderu .................................................................... 258
Wybrane metody obiektu MAPIFolder ........................................................................... 259
Obsuga otrzymywanych i wysyanych wiadomoci .............................................................. 260
Otrzymywanie wiadomoci: obsuga zdarzenia ItemAdd ............................................... 260
Wysyanie wiadomoci: obsuga zdarzenia ItemSend .................................................... 261
Praca z wiadomociami pocztowymi ..................................................................................... 263
Waciwoci obiektu MailItem ........................................................................................ 263
Metody obiektu MailItem ............................................................................................... 264

Spis treci

Przykad: tworzenie zaawansowanych regu dla wiadomoci przychodzcych ..............266


Przykad: eliminowanie spamu .......................................................................................267
Wysyanie wiadomoci ...........................................................................................................268
Tworzenie nowej wiadomoci ........................................................................................268
Tworzenie odpowiedzi na wiadomo lub przesyanie jej dalej ......................................269
Okrelanie odbiorcw wiadomoci .................................................................................269
Wysyanie wiadomoci pocztowej ..................................................................................270
Przykad: wysyanie wiadomoci pocztowej z przypomnieniem ....................................271
Praca z zacznikami ..............................................................................................................272
Przykad: usuwanie zacznikw z wiadomoci przesyanej dalej ..................................273
Doczanie pliku do wiadomoci .....................................................................................274
Programowanie w aplikacji Outlook z poziomu innych programw ......................................275
Tworzenie odwoania do Outlooka .................................................................................275
Uzyskanie obiektu NameSpace .......................................................................................276
Logowanie w sesji Outlooka ...........................................................................................276
Wylogowywanie z sesji Outlooka ...................................................................................277
Odnoniki ........................................................................................................................279

III

WYKORZYSTANIE MOLIWOCI JZYKA VBA

12 Tworzenie niestandardowych okien dialogowych VBA ...........................283


Dodawanie formularza do projektu .......................................................................................284
Modyfikowanie waciwoci trybu projektowania formularza ...............................................285
Kategoria Appearance ....................................................................................................286
Kategoria Behavior .........................................................................................................286
Kategoria Font ................................................................................................................287
Kategoria Misc ................................................................................................................287
Kategoria Picture ............................................................................................................288
Kategoria Position ..........................................................................................................288
Kategoria Scrolling .........................................................................................................289
Praca z kontrolkami ................................................................................................................289
Umieszczanie kontrolek w formularzu ............................................................................289
Wybieranie kontrolek .....................................................................................................290
Zmiana rozmiaru kontrolek ............................................................................................291
Przenoszenie kontrolek ...................................................................................................292
Kopiowanie kontrolek .....................................................................................................292
Usuwanie kontrolek ........................................................................................................292
Grupowanie kontrolek ....................................................................................................293
Ustawianie waciwoci kontrolek ..................................................................................293
Wsplne waciwoci kontrolek ......................................................................................294
Okrelanie kolejnoci tabulacji ........................................................................................295
Obsuga zdarze formularza ..................................................................................................296

10

Microsoft Office 2007 PL. Jzyk VBA i makra. Rozwizania w biznesie

Typy kontrolek formularza ..................................................................................................... 297


Przyciski polece ............................................................................................................ 297
Etykiety .......................................................................................................................... 298
Pola tekstowe ................................................................................................................. 298
Ramki ............................................................................................................................. 299
Przyciski opcji ................................................................................................................. 299
Pola wyboru ................................................................................................................... 300
Przyciski przeczajce ................................................................................................... 301
Pola listy ......................................................................................................................... 301
Paski przewijania ........................................................................................................... 303
Przyciski pokrta ........................................................................................................... 303
Kontrolki TabStrips i MultiPage ...................................................................................... 304
Zastosowanie formularza w procedurze ................................................................................ 308
Wywietlanie formularza ............................................................................................... 308
Wyadowanie formularza ............................................................................................... 309
Przetwarzanie wynikw formularza ............................................................................... 310
Odnoniki ....................................................................................................................... 312

13 Dostosowywanie interfejsu Wstka pakietu Office 2007 ......................315


Rozszerzalno interfejsu Wstka ........................................................................................ 315
Rozszerzanie interfejsu Wstka: przykad ............................................................................ 318
Krok 1.: utworzenie dokumentu lub szablonu pakietu Office z obsug makr ................ 318
Krok 2.: utworzenie pliku tekstowego i dodanie niestandardowych znacznikw XML ........... 319
Krok 3.: kopiowanie pliku niestandardowych znacznikw XML do pakietu dokumentu .....321
Krok 4.: zmiana nazwy dokumentu i otwarcie go ........................................................... 322
Wiksza zoono oznacza wiksze moliwoci ............................................................ 323
Ukrywanie wbudowanego interfejsu Wstka ...................................................................... 324
Tworzenie niestandardowych kart ........................................................................................ 325
Tworzenie nowej karty ................................................................................................... 325
Dostosowywanie istniejcej karty .................................................................................. 327
Tworzenie niestandardowych grup ....................................................................................... 328
Tworzenie nowej grupy .................................................................................................. 328
Dostosowywanie istniejcej grupy ................................................................................. 329
Tworzenie niestandardowych kontrolek ............................................................................... 330
Wsplne atrybuty kontrolek ........................................................................................... 330
Tworzenie przycisku ....................................................................................................... 332
Tworzenie menu ............................................................................................................. 332
Tworzenie przycisku menu ............................................................................................. 335
Tworzenie pola zaznaczenia ........................................................................................... 337
Tworzenie przycisku przeczajcego ............................................................................. 338
Tworzenie listy rozwijanej .............................................................................................. 339
Tworzenie galerii ............................................................................................................ 342

Spis treci

Tworzenie pola wyboru ..................................................................................................344


Tworzenie kontrolki wywoujcej okno dialogowe .........................................................345
Stosowanie polece interfejsu Wstka po uruchomieniu aplikacji ...............................346
Odnoniki ........................................................................................................................355

14 Wskazwki i rozwizania zwizane z jzykiem VBA ...............................357


Praca z moduami ..................................................................................................................357
Zmiana nazwy moduu ...................................................................................................358
Eksportowanie moduu ...................................................................................................358
Importowanie moduu ....................................................................................................358
Usuwanie moduu ...........................................................................................................359
Konfigurowanie ustawie zabezpiecze makr .......................................................................359
Okrelanie zaufanej lokalizacji ........................................................................................360
Ustawianie poziomu zabezpiecze makr ........................................................................361
Cyfrowe podpisywanie projektu VBA .....................................................................................363
Zapisywanie ustawie aplikacji w rejestrze systemowym .....................................................364
Zapamitywanie ustawie w rejestrze ...........................................................................364
Odczytywanie ustawie zapisanych w rejestrze .............................................................365
Usuwanie ustawie z rejestru .........................................................................................366
Monitorowanie poziomu wykorzystania plikw .............................................................366
Wczytywanie wszystkich ustawie sekcji .......................................................................368
Uzyskiwanie dostpu do systemu plikw z poziomu kodu VBA .............................................369
Zwracanie informacji dotyczcych plikw i katalogw ...................................................369
Przetwarzanie plikw i katalogw ..................................................................................374
Wskazwki pozwalajce przyspieszy procedury ...................................................................379
Wyczenie odwieania zawartoci ekranu ...................................................................380
Ukrywanie dokumentw ................................................................................................380
Nie naley zaznacza danych bez potrzeby .....................................................................380
Bez potrzeby nie naley ponownie oblicza arkuszy Excela ............................................380
Optymalizowanie ptli ....................................................................................................381
Odnoniki ........................................................................................................................382

15 Wychwytywanie bdw programw ...................................................383


Podstawowa strategia wychwytywania bdw ....................................................................384
Ustawienie puapki wychwytujcej bdy .......................................................................384
Tworzenie kodu procedury obsugujcej bdy ...............................................................386
Wznowienie wykonywania programu ............................................................................388
Wyczenie puapki .........................................................................................................391
Praca z obiektem Err ...............................................................................................................391
Waciwoci obiektu Err ..................................................................................................391
Metody obiektu Err .........................................................................................................393
Wychwytywane bdy programw VBA .................................................................................394
Odnoniki ........................................................................................................................399

11

12

Microsoft Office 2007 PL. Jzyk VBA i makra. Rozwizania w biznesie

16 Debugowanie procedur VBA ................................................................401


Podstawowa strategia debugowania .................................................................................... 402
Bdy skadni .................................................................................................................. 402
Bdy kompilacji ............................................................................................................. 402
Bdy uruchomieniowe .................................................................................................. 402
Bdy logiczne ................................................................................................................ 403
Wstrzymywanie procedury .................................................................................................... 403
Wczanie trybu wykonywania krokowego .................................................................... 404
Wyczanie trybu wykonywania krokowego .................................................................. 408
Krokowe wykonywanie procedury ........................................................................................ 408
Krokowe wykonanie instrukcji procedury ...................................................................... 408
Krokowe wykonanie instrukcji bez ledzenia wywoywanej przez ni procedury .......... 409
Wychodzenie z procedury .............................................................................................. 409
Przeskoczenie do pozycji kursora z pominiciem kilku instrukcji ................................... 409
Monitorowanie wartoci procedury ....................................................................................... 409
Zastosowanie okna Locals .............................................................................................. 410
Dodawanie wyraenia czujki .......................................................................................... 410
Edytowanie wyraenia czujki ......................................................................................... 412
Usuwanie wyraenia czujki ............................................................................................ 412
Szybkie wywietlanie wartoci ....................................................................................... 413
Zastosowanie okna Immediate .............................................................................................. 414
Wywietlanie danych w oknie Immediate ..................................................................... 414
Wykonywanie instrukcji w oknie Immediate ................................................................. 416
Wskazwki dotyczce debugowania ..................................................................................... 417
Stosowanie wci w kodzie w celu poprawienia czytelnoci .......................................... 417
Wczanie sprawdzania skadni ..................................................................................... 417
Wymaganie zdeklarowania zmiennych ......................................................................... 417
Dzielenie zoonych procedur ......................................................................................... 418
Dla sw kluczowych jzyka VBA naley uywa maych liter ........................................ 418
Problematyczne instrukcje naley opatrzy komentarzem ............................................ 418
Dzielenie dugich instrukcji ............................................................................................ 418
Gdy tylko to moliwe, naley uywa nazw zakresw Excela ......................................... 418
Naley korzysta ze staych uytkownika ....................................................................... 419
Odnoniki ....................................................................................................................... 419

IV DODATKI
A Instrukcje jzyka VBA ..........................................................................423
B Funkcje jzyka VBA .............................................................................429
C Funkcje arkuszowe Excela w VBA..........................................................441
Skorowidz ..........................................................................................449

Tworzenie wasnych makr


Umoliwienie interpreterowi jzyka VBA wykonania
caoci pracy przez zarejestrowanie makra jest prost metod automatyzowania zada, z ktrej bdzie
si czsto korzysta. Aby jednak w jak najwikszym
stopniu skorzysta z moliwoci jzyka VBA, trzeba
opanowa umiejtno programowania w penym zakresie. Oznacza to pisanie wasnych makr od podstaw
lub na bazie zarejestrowanego makra.
Dlaczego warto sprawia sobie tyle kopotu? Oto tylko
niektre z korzyci, jakie si dziki temu uzyska:
Q

Jeli popeni si bd podczas rejestrowania


makra, zwaszcza takiego, ktre wymaga duej
liczby krokw, do usunicia pomyki wystarczy
prosta modyfikacja kodu VBA makra zamiast
ponownego rejestrowania wszystkiego od pocztku.
Uzyskuje si pen kontrol nad kadym makrem. Oznacza to, e zapewnia si, i makra realizuj dokadnie to, czego si od nich oczekuje.
Mona wykorzysta ukryte moliwoci jzyka
VBA do modyfikowania programw pakietu
Office i zrealizowania kilku robicych wraenie
zada programistycznych, ktre zwyczajnie nie
s moliwe w ramach procesu rejestrowania
makra.

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

Tworzenie wasnych makr

Uaktywnianie karty Deweloper interfejsu Wstka


Jeli kod VBA bdzie tworzony regularnie, przez wywietlenie karty Deweloper w obrbie
interfejsu Wstka pakietu Office 2007 mona sprawi, e cz zada programistycznych
stanie si troch bardziej efektywna. W przypadku tej karty wystarczy jedno kliknicie,
eby uzyska dostp do wielu elementw zwizanych z jzykiem VBA. A zatem kart Deweloper warto uaktywni. W tym celu naley wykona nastpujce kroki:
2

1. Wybra pozycj Przycisk pakietu Office/Opcje programu Aplikacja (w miejsce acucha


Aplikacja naley wstawi nazw uywanego programu pakietu Office, czyli na przykad
Word lub Excel).
2. W obrbie karty Popularne klikn opcj Poka kart Deweloper na Wstce.
3. Klikn przycisk OK.
Warto zauway, e wywietlenie karty Deweloper w jednym programie pakietu Office
spowoduje pojawienie si jej w pozostaych aplikacjach pakietu. Rysunek 2.1 przedstawia
kart Deweloper wywietlon w Excelu.
Rysunek 2.1.
Wywietlanie karty
Deweloper w celu
uatwienia dostpu
do niektrych elementw
jzyka VBA

Uruchamianie edytora VBA


W celu wywietlenia okna edytora VBA w obrbie dowolnego programu pakietu Office naley wybra pozycj Deweloper/Visual Basic (warto zauway, e dla uproszczenia w przykadach zamieszczonych w rozdziale uywana jest jedna aplikacja pakietu Office, a mia-

Omwienie edytora VBA

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.

Omwienie edytora VBA


Zasady funkcjonowania edytora VBA s proste. Jest to niezaleny program, ktrego celem
jest nic innego ni uatwienie tworzenia i edytowania makr VBA (w krgach zawodowych
programistw edytor VBA jest nazywany zintegrowanym rodowiskiem programowania
IDE (ang. Integrated Development Environment)).
Po pierwszym uruchomieniu edytora VBA nie zobaczy si zbyt wiele. Po lewej stronie
okna edytora znajduj si dwa okna Project i Properties. Na tym etapie nie trzeba si przejmowa drugim oknem (wicej na jego temat mona znale w rozdziale 5., Praca z obiektami).
Okno Project (jego techniczna nazwa to Project Explorer) prezentuje zawarto biecego
projektu VBA. Posugujc si najprostszymi terminami, projekt mona okreli jako plik
pakietu Office wraz ze wszystkimi powizanymi z nim skadnikami jzyka VBA, uwzgldniajcymi makra i formularze uytkownika (formularze omwiono w rozdziale 12., Tworzenie niestandardowych okien dialogowych VBA).

38

Rozdzia 2

Tworzenie wasnych makr

Tworzenie nowego moduu


Wikszo zada realizuje si w obrbie jednego lub wikszej liczby moduw edytora VBA.
Moduy s oknami sucymi do przechowywania kodu rdowego. Jeli w poprzednim
rozdziale zarejestrowano jakie makra, mona ju dysponowa moduem. Na wszelki wypadek poniej podano kroki potrzebne do utworzenia nowego moduu.
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

Jeli makra nowego moduu w dowolnym programie maj by dostpne tylko


po otwarciu okrelonego dokumentu, naley klikn ten dokument lub jeden
z jego obiektw.

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

3. W oknie Properties za pomoc waciwoci Name zmieni nazw moduu, a nastpnie


wcisn klawisz Enter (opcjonalny krok).
Aby opanowa umiejtno eksportowania, usuwania i zmieniania nazw moduw, naley zapozna si z podrozdziaem

Praca z moduami na stronie 357.

Otwieranie istniejcego moduu


Jeli w oknie Project istnieje ju modu, w celu jego otwarcia naley wykona nastpujce kroki:
1. W oknie Project otworzy projekt przez kliknicie znaku plusa (+) widocznego z lewej
strony.
2. W obrbie wanie otwartego projektu wywietli zawarto gazi Modules przez
kliknicie znaku plusa (+) widocznego z lewej strony.
3. Dwukrotnie klikn nazw moduu, ktry ma zosta otwarty. Edytor VBA otworzy
okno moduu i wywietli jego kod VBA.

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

Tworzenie wasnych makr

Tworzenie makra polece

Jak wspomniano na pocztku rozdziau, rejestrowanie makra ma ograniczone moliwoci,


poniewa istnieje mnstwo elementw makra, do ktrych nie mona uzyska dostpu za
pomoc myszy lub klawiatury, bd przez wybranie pozycji menu. Przykadowo, w przypadku Excela jzyk VBA oferuje kilkadziesit informacyjnych funkcji makr, ktre zwracaj
dane dotyczce midzy innymi komrek, arkuszy i obszarw roboczych. Ponadto funkcje
sterujce VBA umoliwiaj dodanie prawdziwych struktur programowania, takich jak ptla, rozgazienie i instrukcja decyzyjna (naley zajrze do rozdziau 6., Kontrolowanie kodu VBA).
W celu uzyskania dostpu do tych elementw makra trzeba od podstaw napisa wasne procedury VBA. Jest to prostsze, ni mogoby si wydawa, gdy wszystko, co trzeba zrobi,
to wprowadzi do moduu zestaw instrukcji.
U WAG A
Cho w niniejszym podrozdziale omwiono tworzenie makr VBA, zdaj sobie spraw z oczywistego
paradoksu jak mona pisa makra, jeli jeszcze nie zdobyo si na ich temat adnej wiedzy?
Celem nastpnych czterech rozdziaw jest zaznajomienie Czytelnika z instrukcjami i funkcjami
jzyka VBA. Informacje zamieszczone w tym podrozdziale i w nastpnych rozdziaach bd suy
jako baza do poszerzania umiejtnoci programowania w jzyku VBA.

Pisanie makra polece


Po otwarciu i uaktywnieniu okna moduu, w celu utworzenia wasnego makra polece naley
wykona nastpujce kroki:
1. Otworzy modu, ktry ma by zastosowany dla funkcji.
2. Znak kursora umieci w miejscu, w ktrym rozpocznie si pisanie makra (trzeba
zadba o to, eby znak kursora nie znajdowa si w obrbie istniejcego makra).
3. Z menu Insert wybra pozycj Procedure. Edytor VBA wywietli okno dialogowe
Add Procedure (rysunek 2.4).
Rysunek 2.4.
Za pomoc okna
dialogowego Add
Procedure mona nada
nazw nowej procedurze
i kreli typ procedury,
ktr zamierza si
zastosowa

Tworzenie makra polece

41

4. Przy uyciu pola tekstowego Name okreli nazw makra. Oto kilka oglnych wytycznych, ktre musz by przestrzegane:
x

Nazwa musi liczy nie wicej ni 255 znakw.

Pierwszy znak musi by liter lub podkreleniem (_).

Nie mona uywa spacji ani kropki.

5. W grupie Type sprawdzi, czy jest aktywna opcja Sub.


6. Klikn przycisk OK. Interpreter jzyka VBA umieci w module poniszy kod (w miejscu NazwaProcedury bdzie nazwa wprowadzona w kroku 3.).
Public Sub NazwaProcedury()
End Sub

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

funkcji MsgBox na stronie 66.

42

Rozdzia 2

Tworzenie wasnych makr

Uruchamianie makra polece


Cho aplikacje pakietu Office oferuj kilka metod uruchamiania makr polece VBA, najczciej uywane bd nastpujce dwie:

W module naley klikn w dowolnym miejscu w obrbie makra, a nastpnie z menu


Run wybra pozycj Run Sub/UserForm lub wcisn klawisz F5.

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

Wprowadzanie instrukcji VBA


Jak wczeniej wspomniano, wprowadzanie instrukcji VBA jest prost spraw. Wpisuje si
kod, a nastpnie na kocu kadego wiersza wciska klawisz Enter. Dodatkowo przy rozpoczynaniu tworzenia makra polece zalecane jest wcinicie klawisza Tab przed wprowadzeniem pierwszego wiersza. W ten sposb uzyska si wcicie kodu, uatwiajce jego czytanie
(operacji wcicia nie naley wykonywa dla wierszy Public Sub i End Sub, a jedynie dla
instrukcji znajdujcych si midzy nimi). Dla wygody uytkownika interpreter jzyka VBA
zachowuje wcicie w kolejnych wierszach. Dziki temu wcicie trzeba zastosowa tylko
w pierwszym wierszu.
Komentarz jest specjalnego typu instrukcj jzyka VBA, ktra suy do opisania czego
zwizanego z procedur. Przykadowo, wiele osb umieszcza przed procedur kilka wierszy
komentarza, aby opisa przeznaczenie procedury. Wikszo programistw (w tym wszyscy
dobrzy programici) kod procedury poszerza o komentarze objaniajce, co robi poszczeglne instrukcje, a take opisujce logiczny przebieg realizowania procedury itp. Interpreter

Tworzenie makra polece

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

Formatowanie za pomoc koloru kadego sowa wiersza. Domylnie sowa kluczowe


jzyka VBA s niebieskie, komentarze zielone, bdy czerwone, a reszta tekstu czarna.

Wielko znakw sw kluczowych jzyka VBA jest odpowiednio ustawiana. Jeli na


przykad wprowadzi si msgbox "Witaj wiecie!", po wciniciu klawisza Enter interpreter jzyka VBA dokona konwersji instrukcji do postaci MsgBox "Witaj wiecie!".

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

Tworzenie wasnych makr

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).

Tworzenie funkcji uytkownika


Aplikacje pakietu Office dysponuj wieloma wbudowanymi funkcjami. Przykadowo, Excel
ma setki funkcji (jedna z najwikszych bibliotek funkcji spotykanych w pakietach arkuszy
kalkulacyjnych). Jednak nawet pomimo tak obszernego zbioru, w dalszym cigu napotyka
si mnstwo sytuacji, w ktrych funkcje te nie s przydatne. Przykadowo moe by konieczne
obliczenie powierzchni koa o okrelonym promieniu lub siy grawitacji wystpujcej midzy
dwoma obiektami. Oczywicie obliczenia te mona z atwoci przeprowadzi w arkuszu. Jeli
jednak trzeba bdzie czsto je wykonywa, sensowne staje si utworzenie wasnych funkcji,
z ktrych mona w dowolnej chwili skorzysta. W nastpnych trzech punktach wyjaniono,
jak utworzy funkcje uytkownika.

Oglne informacje na temat funkcji uytkownika


Jak wczeniej wspomniano, cech charakterystyczn funkcji uytkownika jest to, e zwracaj
wynik. S one w stanie wykonywa dowoln liczb oblicze na liczbach, tekcie, wartociach
logicznych lub innych. Jednak zwykle nie maj wpywu na swoje otoczenie. Przykadowo,
w arkuszu zazwyczaj nie przemieszczaj aktywnej komrki, nie formatuj zakresu ani nie
zmieniaj ustawie obszaru roboczego.
A zatem, co mona umieci w funkcji uytkownika? Wikszo tego typu funkcji skada
si z jednego lub wikszej liczby wyrae. Wyraenie jest okrelon kombinacj wartoci (na
przykad liczb), operatorw (np. + i *), zmiennych (wicej o nich w rozdziale 3.), funkcji jzyka
VBA lub funkcji aplikacji. Kombinacja ta generuje wynik (szczegowo wyraenia omwiono
w rozdziale 4., Tworzenie wyrae jzyka VBA).
Wszystkie funkcje uytkownika maj tak sam podstawow struktur. Oto ona:
Function NazwaProcedury (argument1, argument2, ...)
[Instrukcje VBA]
NazwaProcedury = zwracanaWarto
End Function

Oto podsumowanie rnych skadnikw funkcji uytkownika:


Q

Function sowo kluczowe identyfikujce procedur jako funkcj uytkownika.

Sowo to jest powodem, dla ktrego funkcje uytkownika s te nazywane procedurami funkcyjnymi.

Tworzenie funkcji uytkownika

45

NazwaProcedury unikatowa nazwa funkcji.

argument1, argument2, ... podobnie do wielu funkcji aplikacji, funkcje uyt-

kownika pobieraj argumenty. Argumenty (czasami okrelane mianem parametrw)


zwykle maj posta jednej lub wielu wartoci wykorzystywanych na wejciu przez
funkcj przeprowadzajc obliczenia. Argumenty zawsze podaje si w nawiasach okrgych za nazw funkcji. Wiele argumentw oddziela si przecinkami (jeli funkcja
nie wymaga argumentw, niezalenie od tego za jej nazw trzeba wstawi nawiasy).
Q

Instrukcje VBA jest to kod faktycznie realizujcy obliczenia. Zazwyczaj ma on

posta zestawu instrukcji jzyka VBA i wyrae, ktre doprowadzaj do uzyskania


kocowego wyniku zwracanego przez funkcj.
Q

zwracanaWarto ostateczny wynik obliczony przez funkcj.

End Function sowa kluczowe identyfikujce koniec funkcji.

Wszystkie funkcje uytkownika bd miay tak podstawow struktur. W zwizku z tym,


tworzc tego typu makra, na uwadze trzeba mie nastpujce trzy rzeczy:
Q

Jakie argumenty funkcja pobierze?

Jakie wyraenia zostan uyte w obrbie funkcji?

Jaka warto zostanie zwrcona?

Pisanie funkcji uytkownika


Gdy rejestruje si makro, interpreter jzyka VBA zawsze umieszcza kod w obrbie makra
polece. Niestety, nie istnieje metoda rejestrowania funkcji uytkownika. Trzeba j napisa
rcznie. Okazuje si, e zadanie to bardzo przypomina tworzenie makra polece od podstaw.
Oto oglne kroki, ktre trzeba wykona w celu napisania funkcji uytkownika:
1. Otworzy modu, ktry ma by zastosowany dla funkcji.
2. Znak kursora umieci w miejscu, w ktrym rozpocznie si pisanie funkcji (trzeba
zadba o to, eby znak kursora nie znajdowa si w obrbie istniejcego makra).
3. Z menu Insert wybra pozycj Procedure, eby wywietli okno dialogowe Add Procedure.
4. Przy uyciu pola tekstowego Name okreli nazw funkcji. Wytyczne, ktre musz
by przestrzegane, s takie same jak w przypadku makra polece. Nazwa musi liczy
nie wicej ni 255 znakw. Pierwszy znak musi by liter lub podkreleniem (_). Nie
mona uywa spacji ani kropki.
5. W grupie Type sprawdzi, czy aktywna jest opcja Function.
6. Klikn przycisk OK. Interpreter jzyka VBA umieci w module poniszy kod (w miejscu NazwaProcedury bdzie nazwa okrelona w kroku 3.).
Public Function NazwaProcedury()
End Function

46

Rozdzia 2

Tworzenie wasnych makr

7. Midzy wierszami Public Function i End Function umieci instrukcje VBA,


ktre maj znale si w funkcji. Aby wstawi nowy wiersz, po wpisaniu kadej instrukcji naley wcisn klawisz Enter.
8. Trzeba pamita o uwzgldnieniu instrukcji, ktra definiuje zwracan warto. Instrukcja powinna zawiera nazw funkcji, a za ni znak rwnoci i zwracan warto.
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

Sales i Expenses to argumenty przekazywane funkcji. Funkcja od wartoci Sales odejmuje

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.

Tworzenie funkcji uytkownika

47

Aby uy funkcji w aplikacji, naley odwoa si do niej. Jest to najbardziej przydatne


w przypadku Excela, w ktrym funkcj uytkownika mona zastosowa w obrbie formuy arkuszowej.
W tym celu najprociej jest wstawi funkcj w komrce w taki sam sposb jak dowoln
wbudowan funkcj Excela. Inaczej mwic, najpierw naley wpisa nazw funkcji, a nastpnie w nawiasach okrgych wymagane argumenty. Poniej zamieszczono przykadow formu, ktra wykorzystuje funkcj GrossMargin i zakada, e wartoci argumentw Sales
i Expenses znajduj si odpowiednio w komrkach B1 i B2 (rysunek 2.9).
=GrossMargin(B1, B2)

Rysunek 2.9.
Funkcja GrossMargin
uyta w formule
arkuszowej Excela

W celu wstawienia funkcji uytkownika mona rwnie posuy si kreatorem funkcji.


Oto kroki, ktre trzeba wykona:
1. Klikn komrk, w ktrej zamierza si umieci funkcj uytkownika.
2. Z menu Formuy wybra pozycj Wstaw funkcj, eby otworzy okno dialogowe Wstawianie funkcji.
3. Z listy Lub wybierz kategori wybra pozycj Uytkownika. Excel wywietla list funkcji
uytkownika (rysunek 2.10).
4. Zaznaczy funkcj, ktra ma zosta wstawiona, i klikn przycisk OK. Pojawi si
okno dialogowe Argumenty funkcji.
5. Okreli wartoci lub adresy komrek przechowujcych wartoci argumentw
funkcji, a nastpnie klikn przycisk OK. Excel wstawi funkcj.

48

Rozdzia 2

Tworzenie wasnych makr

Rysunek 2.10.
W oknie dialogowym
Wstawianie funkcji naley
wybra kategori
Uytkownika, eby ujrze
list istniejcych funkcji
uytkownika

Wykorzystanie technologii IntelliSense


Technologi IntelliSense jzyka VBA mona porwna do mini wersji systemu pomocy
VBA Help. Oferuje ona pomoc dotyczc skadni jzyka VBA, ktra jest uaktywniana dynamicznie lub na danie. Powinno si sign po to niebywale przydatne narzdzie, poniewa w trakcie lektury rozdziaw tej ksiki okae si, e jzyk VBA zawiera dziesitki
instrukcji i funkcji, a ponadto programy obsugujce ten jzyk oferuj setki obiektw, z ktrymi mona pracowa. Niewiele osb jest w stanie wszystko to zapamita. Poza tym niemiym dowiadczeniem bdzie cige szukanie poprawnej skadni. W czasie wprowadzania kodu technologia IntelliSense pomaga przez oferowanie wskazwek i alternatyw. Aby
Czytelnik zrozumia, co mam na myli, przyjrzymy si czterem najbardziej przydatnym
typom pomocy oferowanej przez technologi IntelliSense.

Lista waciwoci lub metod


W rozdziale 4. wyjaniono, jak pracowa z obiektami udostpnianymi przez kad aplikacj obsugujc jzyk VBA. W szczeglnoci Czytelnik dowie si o waciwociach i metodach, ktre po prostu definiuj cechy charakterystyczne kadego obiektu (w bardziej
oglnym sensie waciwoci opisuj wygld lub dziaanie obiektu, a metody to, co mona
zrobi w przypadku okrelonego obiektu).
Jednak w dalszej czci ksiki okae si, e kady obiekt moe mie dziesitki waciwoci i metod. W celu uatwienia uytkownikowi poprawnego tworzenia kodu procedury,
podczas wprowadzania instrukcji VBA technologia IntelliSense moe wywietli list dostpnych waciwoci i metod. Aby to wyprbowa, w obrbie edytora VBA naley uaktywni modu, a nastpnie wpisa acuch application, a za nim kropk. Jak wida na

Wykorzystanie technologii IntelliSense

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.

Aby umieci pozycj w kodzie, naley j dwukrotnie klikn.

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

Tworzenie wasnych makr

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(

Od razu po wprowadzeniu lewego nawiasu pojawi si okienko informujce o argumentach


dostpnych dla funkcji Pmt jzyka VBA (rysunek 2.13). Oto cechy charakterystyczne okienka:
Q

Biecy argument jest pogrubiany. Gdy wprowadzi si argument, a nastpnie przecinek, interpreter jzyka VBA pogrubi nastpny argument.

Opcjonalne argumenty s umieszczone w nawiasach kwadratowych ([ ]).

Zamykanie edytora Visual Basic Editor

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.).

W celu ukrycia okienka naley wcisn klawisz Esc.

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.

Zamykanie edytora Visual Basic Editor


Po zakoczeniu prac zwizanych z kodem jzyka VBA mona zamkn edytor VBA. W tym
celu naley skorzysta z jednej z nastpujcych metod:

52

Rozdzia 2

Tworzenie wasnych makr

Z menu File naley wybra polecenie Close and Return to Aplikacja. W miejscu acucha
Aplikacja bdzie widoczna nazwa uywanego programu (na przykad Microsoft Excel).

Wcinicie kombinacji klawiszy Alt+Q.

Odnoniki
2

Aby dowiedzie si wicej na temat stosowania zmiennych w kodzie VBA, naley zajrze do rozdziau 3., Zmienne programw na stronie 53.

Szczegowe omwienie funkcji MsgBox mona znale w punkcie Pobieranie danych


wejciowych za pomoc funkcji MsgBox na stronie 66.

W celu uzyskania dokadnych informacji na temat wyrae naley przej do rozdziau 4.,
Tworzenie wyrae jzyka VBA na stronie 73.

Informacje dotyczce waciwoci obiektw zamieszczono w podrozdziale Stosowanie


waciwoci obiektw na stronie 74.

Informacje na temat metod obiektw zawarto w podrozdziale Stosowanie metod


obiektw na stronie 98.

W celu zapoznania si z takimi operacjami jak zmiana nazwy, eksportowanie i usuwanie


moduw naley przej do podrozdziau Praca z moduami na stronie 357.

You might also like