You are on page 1of 30

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Excel 2003 PL.


Programowanie w VBA.
Vademecum profesjonalisty
Autor: John Walkenbach
Tumaczenie: Radosaw Meryk, Piotr Pilch
ISBN: 83-7361-504-0
Tytu oryginau: Excel 2003 Power Programming with VBA
Format: B5, stron: 872

Excel jeszcze bogatszy, porczniejszy i dostosowany do Twoich potrzeb


Moliwoci Excela s ogromne, jednak nie zawsze w peni odpowiadaj naszym
potrzebom. Najpopularniejszy obecnie arkusz kalkulacyjny zawiera take wiele
interesujcych funkcji ukrytych w tle i nieznanych typowemu uytkownikowi.
Czy istnieje sposb na wykorzystanie ukrytych funkcji Excela oraz dostosowanie tych
znanych do wymaga stawianych przez konkretne zadanie? Tak -- tym sposobem jest
Visual Basic for Applications (VBA). VBA to jzyk programowania umoliwiajcy
tworzenie aplikacji bazujcych na moliwociach innych aplikacji, w tym przypadku
na moliwociach Excela.
Ksika Excel 2003 PL. Programowanie w VBA. Vademecum profesjonalisty
przeznaczona jest dla wszystkich uytkownikw Excela, ktrzy chc pogbi swoj
wiedz o tej aplikacji i stworzy wasne, powizane z ni, programy. Przedstawia
podstawy programowania w Excelu oraz techniki zaawansowane wszystko, co jest
zwizane z projektowaniem aplikacji w Excelu i programowaniem w jzyku VBA.
Niezbdne wiadomoci o Excelu i wykorzystywanych przez
niego formatach plikw
Zasady projektowania aplikacji arkusza kalkulacyjnego
Programowanie w jzyku VBA
Tworzenie niestandardowych okien dialogowych formularzy UserForm
Pisanie narzdzi dla programu Excel
Praca z wykresami
Programowanie obsugi zdarze
Wsppraca z innymi aplikacjami
Tworzenie elementw aplikacji menu, paskw narzdzi i systemw pomocy
Operacje na plikach
Komponenty jzyka VBA
Niewielu uytkownikw Excela jest tak naprawd wiadomych jego moliwoci.
Przeczytaj niniejsz ksik i docz do tej elitarnej grupy.

5RKUVTGEK



 




   




  !


Historia arkuszy kalkulacyjnych w zarysie ...........................................................................29
Wszystko zaczo si od programu VisiCalc ..................................................................29
Program 1-2-3 firmy Lotus..............................................................................................30
Program Quattro Pro........................................................................................................33
Program Microsoft Excel.................................................................................................34
Excel jako dobre narzdzie dla projektantw aplikacji .........................................................36
Rola Excela w strategii Microsoftu .......................................................................................38




" #


Mylenie obiektowe ...............................................................................................................39
Skoroszyty .............................................................................................................................40
Arkusze............................................................................................................................40
Arkusze wykresw ..........................................................................................................41
Arkusze makr XLM.........................................................................................................42
Arkusze dialogowe programw Excel 5/95.....................................................................42
Interfejs uytkownika w Excelu ............................................................................................42
Menu................................................................................................................................42
Menu podrczne ..............................................................................................................43
Paski narzdzi ..................................................................................................................43
Okna dialogowe...............................................................................................................44
Funkcja przecignij i upu..........................................................................................45
Skrty klawiaturowe........................................................................................................45
Inteligentne tagi ...............................................................................................................45
Panel zada ......................................................................................................................46
Wprowadzanie danych...........................................................................................................46
Formuy, funkcje i nazwy ......................................................................................................48
Dostosowywanie zawartoci okna Excela .............................................................................49
Zaznaczanie obiektw............................................................................................................49
Formatowanie ........................................................................................................................50
Formatowanie liczbowe...................................................................................................50
Formatowane stylu ..........................................................................................................50
Ksztaty ..................................................................................................................................51
Wykresy .................................................................................................................................52
Makra i programowanie.........................................................................................................52

Excel 2003 PL. Programowanie w VBA. Vademecum profesjonalisty

Dostp do bazy danych ..........................................................................................................53


Arkuszowe bazy danych..................................................................................................53
Zewntrzne bazy danych .................................................................................................55
Funkcje internetowe...............................................................................................................55
Funkcje zwizane z jzykiem XML ......................................................................................56
Narzdzia analizy...................................................................................................................56
Konspekty........................................................................................................................56
Automatyczne sumy czciowe.......................................................................................56
Dodatek Analysis ToolPak ..............................................................................................56
Tabele przestawne ...........................................................................................................57
Dodatek Solver ................................................................................................................58
Dodatki...................................................................................................................................58
Zgodno wersji.....................................................................................................................58
Opcje ochrony........................................................................................................................58
Ochrona formu przed nadpisaniem ................................................................................59
Ochrona struktury skoroszytu..........................................................................................59
Ochrona skoroszytu przy uyciu hasa ............................................................................60
Ochrona kodu jzyka VBA przy uyciu hasa.................................................................60
System pomocy Excela ..........................................................................................................61




$#%& #&'

(
Formuy..................................................................................................................................63
Obliczanie formu ..................................................................................................................63
Odwoania do komrki lub zakresu .......................................................................................64
Dlaczego warto stosowa odwoania, ktre nie s wzgldne? ........................................65
Notacja W1K1 .................................................................................................................65
Odwoania do innych arkuszy lub skoroszytw ..............................................................66
Zastosowanie nazw ................................................................................................................67
Nadawanie nazw komrkom i zakresom.........................................................................67
Nadawanie nazw istniejcym odwoaniom .....................................................................68
Stosowanie nazw z operatorem przecicia ......................................................................69
Nadawanie nazw kolumnom i wierszom.........................................................................70
Obszar obowizywania nazw ..........................................................................................70
Nadawanie nazw staym ..................................................................................................70
Nadawanie nazw formuom.............................................................................................71
Nadawanie nazw obiektom..............................................................................................73
Bdy formu ..........................................................................................................................73
Formuy tablicowe .................................................................................................................74
Przykad formuy tablicowej ...........................................................................................74
Kalendarz oparty na formule tablicowej .........................................................................75
Zalety i wady formuy tablicowej....................................................................................75
Metody zliczania i sumowania ..............................................................................................76
Zastosowanie funkcji LICZ.JEELI lub SUMA.JEELI ...............................................76
Zastosowanie formu tablicowych do zliczania i sumowania .........................................77
Inne narzdzia zliczajce .................................................................................................79
Uywanie daty i czasu ...........................................................................................................79
Wprowadzanie daty i czasu .............................................................................................79
Stosowanie dat sprzed roku 1900 ....................................................................................80
Tworzenie megaformu..........................................................................................................81

)


 

*+
Uruchamianie Excela .............................................................................................................85
Obsugiwane formaty plikw arkuszy kalkulacyjnych..........................................................87
Pliki arkusza kalkulacyjnego 1-2-3 firmy Lotus .............................................................87
Pliki arkusza kalkulacyjnego Quattro Pro .......................................................................88

Spis treci

Formaty plikw baz danych ............................................................................................88


Formaty plikw tekstowych ............................................................................................89
Inne formaty plikw ........................................................................................................89
Pliki tworzone przez Excel ....................................................................................................89
Pliki formatu XLS ...........................................................................................................90
Pliki obszaru roboczego...................................................................................................90
Pliki szablonw................................................................................................................91
Pliki paskw narzdzi......................................................................................................91
Pliki dodatkw.................................................................................................................92
Excel i jzyk HTML ..............................................................................................................92
W jaki sposb Excel korzysta z formatu HTML? ...........................................................93
Zwikszanie zoonoci...................................................................................................94
Tworzenie interaktywnych plikw HTML......................................................................94
Importowanie i eksportowanie plikw XML.........................................................................96
Czym jest XML? .............................................................................................................96
Importowanie zawartoci plikw XML przy uyciu mapy .............................................97
Importowanie zawartoci plikw XML do listy..............................................................99
Eksportowanie zawartoci plikw XML z Excela ..........................................................99
Ustawienia Excela w rejestrze systemu Windows...............................................................100
Rejestr systemu Windows .............................................................................................100
Ustawienia Excela .........................................................................................................101



      !"

+


,#- .-#-& "!

+
Robocza definicja aplikacji arkusza kalkulacyjnego ...........................................................105
Projektant i uytkownik kocowy .......................................................................................106
Kim s projektanci i czym si zajmuj? ........................................................................107
Klasyfikacja uytkownikw arkuszy kalkulacyjnych ...................................................108
Odbiorcy aplikacji arkusza kalkulacyjnego...................................................................108
Rozwizywanie problemw przy uyciu aplikacji arkusza kalkulacyjnego........................109
Podstawowe kategorie aplikacji arkusza kalkulacyjnego ....................................................110
Arkusze kalkulacyjne tworzone szybko i niestarannie..................................................111
Arkusze kalkulacyjne przeznaczone wycznie do uytku prywatnego........................111
Aplikacje jednego uytkownika ....................................................................................112
Aplikacje typu spaghetti.............................................................................................112
Aplikacje uytkowe .......................................................................................................112
Dodatki zawierajce funkcje arkusza ............................................................................113
Jednoblokowe budety ..................................................................................................113
Modele warunkowe .......................................................................................................114
Aplikacje przechowujce dane i udzielajce do nich dostpu.......................................114
Aplikacje komunikujce si z bazami danych...............................................................115
Aplikacje pod klucz ...................................................................................................115

(


#.- &.-#-& "

/
Podstawowe etapy projektowania........................................................................................117
Okrelenie wymaga uytkownika ......................................................................................118
Planowanie aplikacji speniajcej wymagania uytkownika ...............................................119
Okrelenie najwaciwszego interfejsu uytkownika ..........................................................121
Tworzenie niestandardowych okien dialogowych ........................................................122
Zastosowanie kontrolek ActiveX w arkuszu .................................................................122
Dostosowanie menu.......................................................................................................123
Dostosowywanie paskw narzdzi................................................................................125
Tworzenie skrtw klawiaturowych .............................................................................127
Rozpoczcie prac projektowych....................................................................................127

Excel 2003 PL. Programowanie w VBA. Vademecum profesjonalisty

Zadania realizowane z myl o kocowym uytkowniku ...................................................127


Testowanie aplikacji ......................................................................................................128
Zwikszanie odpornoci aplikacji .................................................................................128
Tworzenie aplikacji intuicyjnej i estetycznie wygldajcej ..........................................131
Tworzenie systemu pomocy przeznaczonego dla uytkownika....................................132
Dokumentowanie prac projektowych............................................................................132
Przekazanie aplikacji uytkownikom ............................................................................132
Uaktualnianie aplikacji w razie koniecznoci ...............................................................133
Pozostae kwestie dotyczce projektowania ........................................................................134
Wersja Excela zainstalowana przez uytkownika .........................................................134
Wersja jzykowa............................................................................................................134
Szybko systemu..........................................................................................................135
Tryby karty graficznej ...................................................................................................135

 #$%  &  '    "


/


$. & -#01


Podstawowe informacje o jzyku BASIC ...........................................................................139
Jzyk VBA...........................................................................................................................139
Modele obiektowe .........................................................................................................140
Porwnanie jzyka VBA z jzykiem XLM...................................................................140
Wprowadzenie do jzyka VBA ...........................................................................................140
Edytor Visual Basic .............................................................................................................144
Uruchomienie edytora VBE ..........................................................................................144
Okna edytora Visual Basic ............................................................................................145
Zastosowanie okna Project Explorer ...................................................................................146
Dodanie nowego moduu VBA .....................................................................................147
Usuwanie moduu VBA.................................................................................................148
Eksportowanie i importowanie obiektw ......................................................................148
Zastosowanie okien Code ....................................................................................................148
Minimalizacja i maksymalizacja okien .........................................................................149
Przechowywanie kodu rdowego jzyka VBA ..........................................................149
Wprowadzanie kodu rdowego jzyka VBA .............................................................150
Dostosowywanie edytora Visual Basic................................................................................155
Zakadka Editor .............................................................................................................156
Zakadka Editor Format.................................................................................................158
Zakadka General...........................................................................................................159
Zastosowanie zakadki Docking....................................................................................160
Rejestrator makr Excela.......................................................................................................160
Co waciwie rejestrator makr zapisuje? .......................................................................161
Wzgldne czy bezwzgldne?.........................................................................................162
Opcje zwizane z rejestrowaniem .................................................................................165
Modyfikowanie zarejestrowanych makr .......................................................................166
Obiekty i zbiory ...................................................................................................................167
Hierarchia obiektw ......................................................................................................168
Zbiory ............................................................................................................................168
Odwoywanie si do obiektw ......................................................................................169
Waciwoci i metody ..........................................................................................................169
Waciwoci obiektw...................................................................................................170
Metody obiektw...........................................................................................................171
Obiekt Comment..................................................................................................................172
Pomoc dotyczca obiektu Comment .............................................................................172
Waciwoci obiektu Comment .....................................................................................173
Metody obiektu Comment .............................................................................................173

Spis treci

Zbir Comments ............................................................................................................174


Waciwo Comment ...................................................................................................175
Obiekty podlegajce obiektowi Comment ....................................................................175
Sprawdzanie, czy komrka zawiera komentarz ............................................................177
Dodanie nowego obiektu Comment ..............................................................................177
Kilka przydatnych waciwoci obiektu Application ....................................................178
Obiekty Range .....................................................................................................................179
Waciwo Range.........................................................................................................180
Waciwo Cells...........................................................................................................181
Waciwo Offset.........................................................................................................182
Co naley wiedzie o obiektach?.........................................................................................184
Podstawowe zagadnienia, ktre naley zapamita ......................................................184
Dodatkowe informacje na temat obiektw i waciwoci .............................................185

*


#."&-#01

*
Przegld elementw jzyka VBA ........................................................................................189
Komentarze ..........................................................................................................................191
Zmienne, typy danych i stae ...............................................................................................192
Definiowanie typw danych..........................................................................................193
Deklarowanie zmiennych ..............................................................................................196
Zasig zmiennych ..........................................................................................................197
Zastosowanie staych.....................................................................................................201
Zastosowanie acuchw...............................................................................................202
Zastosowanie dat ...........................................................................................................203
Instrukcje przypisania ..........................................................................................................204
Tablice .................................................................................................................................205
Deklarowanie tablic.......................................................................................................205
Deklarowanie tablic wielowymiarowych ......................................................................206
Zmienne obiektowe..............................................................................................................207
Typy danych definiowane przez uytkownika ....................................................................208
Funkcje wbudowane ............................................................................................................208
Manipulowanie obiektami i zbiorami ..................................................................................211
Konstrukcja With ... End With ......................................................................................211
Konstrukcja For Each ... Next .......................................................................................212
Sterowanie wykonywaniem procedur..................................................................................214
Instrukcja GoTo.............................................................................................................214
Konstrukcja If ... Then...................................................................................................215
Konstrukcja Select Case ................................................................................................218
Wykonywanie bloku instrukcji w ramach ptli.............................................................221




2& . %-#01

/
Deklarowanie i tworzenie procedur Sub jzyka VBA.........................................................227
Deklarowanie procedury Sub ........................................................................................227
Zasig procedury ...........................................................................................................228
Wykonywanie procedur Sub................................................................................................229
Wykonywanie procedury przy uyciu polecenia Run Sub/UserForm ..........................230
Uruchamianie procedury z poziomu okna dialogowego Makro ...................................230
Wykonywanie procedury przy uyciu skrtu opartego na klawiszu Ctrl......................231
Wykonywanie procedury przy uyciu niestandardowego menu...................................232
Wywoywanie procedury z innej procedury..................................................................233
Wykonywanie procedury przy uyciu przycisku paska narzdzi..................................237
Wykonywanie procedury poprzez kliknicie obiektu ...................................................238
Wykonywanie makra po wystpieniu zdarzenia ...........................................................239
Wykonywanie procedury z poziomu okna Immediate ..................................................239

Excel 2003 PL. Programowanie w VBA. Vademecum profesjonalisty

Przekazywanie argumentw procedurom ............................................................................240


Metody obsugi bdw .......................................................................................................243
Przechwytywanie bdw ..............................................................................................243
Przykady kodu rdowego obsugujcego bdy ........................................................245
Rzeczywisty przykad wykorzystujcy procedury Sub .......................................................247
Cel..................................................................................................................................247
Wymagania projektowe.................................................................................................247
Dostpne informacje......................................................................................................248
Sposb realizacji............................................................................................................248
Co naley wiedzie? ......................................................................................................249
Wstpne rejestrowanie makra........................................................................................249
Wstpne przygotowania ................................................................................................250
Pisanie kodu rdowego...............................................................................................251
Tworzenie procedury sortujcej ....................................................................................252
Dodatkowe testy ............................................................................................................255
Usuwanie problemw ....................................................................................................256
Dostpno narzdzia ....................................................................................................258
Ocenianie projektu.........................................................................................................259

 
 3 & . 4&&

(
Porwnanie procedur Sub i Function...................................................................................261
Dlaczego tworzy si funkcje niestandardowe? ....................................................................261
Pierwszy przykad procedury Function ...............................................................................262
Funkcja niestandardowa ................................................................................................262
Zastosowanie funkcji w arkuszu....................................................................................263
Zastosowanie funkcji w procedurze jzyka VBA .........................................................264
Analiza funkcji niestandardowej ...................................................................................264
Procedury Function..............................................................................................................265
Deklarowanie funkcji ....................................................................................................265
Zasig funkcji ................................................................................................................266
Wykonywanie procedur Function .................................................................................267
Argumenty procedury Function...........................................................................................268
Przykady funkcji .................................................................................................................268
Funkcja pozbawiona argumentw .................................................................................269
Kolejna funkcja pozbawiona argumentw ....................................................................270
Funkcja z jednym argumentem......................................................................................270
Funkcja z dwoma argumentami.....................................................................................273
Funkcja pobierajca tablic jako argument ...................................................................274
Funkcja uywajca opcjonalnych argumentw.............................................................274
Funkcja zwracajca tablic jzyka VBA .......................................................................276
Funkcja zwracajca warto bdu ................................................................................278
Funkcja o nieokrelonej liczbie argumentw ................................................................280
Emulowanie funkcji SUMA Excela ....................................................................................280
Funkcje wykrywajce i usuwajce bdy.............................................................................283
Okno dialogowe Wstawianie funkcji...................................................................................284
Definiowanie kategorii funkcji......................................................................................285
Dodanie opisu funkcji....................................................................................................286
Dodatki przechowujce funkcje niestandardowe ................................................................287
Interfejs API systemu Windows ..........................................................................................287
Przykady zastosowania funkcji interfejsu API systemu Windows ..............................288
Identyfikacja katalogu systemu Windows.....................................................................288
Wykrywanie wcinicia klawisza Shift.........................................................................289
Dodatkowe informacje na temat funkcji interfejsu API................................................290

Spis treci


 ## #."&-#01


Przetwarzanie zakresw.......................................................................................................291
Kopiowanie zakresu ......................................................................................................292
Przenoszenie zakresu.....................................................................................................293
Kopiowanie zakresu o zmiennej wielkoci ...................................................................293
Zaznaczanie rnego typu zakresw i identyfikowanie ich ..........................................294
Wprowadzanie wartoci do komrki.............................................................................296
Wprowadzanie wartoci do nastpnej pustej komrki ..................................................297
Wstrzymywanie wykonywania makra
w celu pobrania zakresu zaznaczonego przez uytkownika.......................................298
Zliczanie zaznaczonych komrek..................................................................................299
Okrelanie typu zaznaczonego zakresu .........................................................................300
Wydajne przetwarzanie komrek zaznaczonego zakresu przy uyciu ptli..................302
Usuwanie wszystkich pustych wierszy..........................................................................303
Okrelanie, czy zakres zawiera si w innym zakresie ...................................................304
Okrelanie typu danych zawartych w komrce.............................................................304
Odczytywanie i zapisywanie zakresw .........................................................................305
Lepsza metoda zapisywania zakresu .............................................................................306
Przenoszenie zawartoci tablic jednowymiarowych .....................................................308
Przenoszenie zawartoci zakresu do tablicy typu Variant.............................................308
Zaznaczanie maksymalnej wartoci zakresu .................................................................309
Zaznaczanie wszystkich komrek okrelonego formatu ...............................................310
Przetwarzanie skoroszytw i arkuszy ..................................................................................312
Zapisywanie wszystkich skoroszytw...........................................................................312
Zapisywanie i zamykanie wszystkich skoroszytw ......................................................312
Korzystanie z waciwoci skoroszytu ..........................................................................312
Synchronizowanie arkuszy ............................................................................................313
Metody programowania w jzyku VBA ..............................................................................314
Przeczanie wartoci waciwoci typu logicznego .....................................................314
Okrelanie liczby drukowanych stron ...........................................................................315
Wywietlanie daty i czasu .............................................................................................315
Pobieranie listy czcionek ...............................................................................................317
Sortowanie tablicy .........................................................................................................318
Przetwarzanie grupy plikw ..........................................................................................319
Funkcje przydatne w procedurach jzyka VBA ..................................................................320
Funkcja FileExists .........................................................................................................321
Funkcja FileNameOnly..................................................................................................321
Funkcja PathExists ........................................................................................................321
Funkcja RangeNameExists............................................................................................322
Funkcja SheetExists.......................................................................................................322
Funkcja WorkbookIsOpen.............................................................................................322
Pobieranie wartoci z zamknitego skoroszytu .............................................................322
Funkcje przydatne w formuach arkusza .............................................................................324
Funkcje zwracajce informacje o formatowaniu komrki ............................................324
Wywietlanie daty w trakcie zapisywania lub drukowania pliku..................................325
Obiekty nadrzdne.........................................................................................................326
Zliczanie komrek, ktrych wartoci zawieraj si pomidzy dwoma wartociami ....327
Zliczanie widocznych komrek zakresu........................................................................328
Okrelanie ostatniej niepustej komrki kolumny lub wiersza.......................................328
Czy acuch jest zgodny z wzorcem?............................................................................330
Wydzielanie n-tego elementu acucha.........................................................................331
Funkcja wielofunkcyjna ................................................................................................332
Funkcja SHEETOFFSET ..............................................................................................333
Zwracanie maksymalnej wartoci ze wszystkich arkuszy.............................................334

10

Excel 2003 PL. Programowanie w VBA. Vademecum profesjonalisty

Zwracanie tablicy zawierajcej unikatowe, losowo uporzdkowane liczby cakowite ....335


Porzdkowanie zakresu w losowy sposb.....................................................................336
Funkcje interfejsu API systemu Windows...........................................................................338
Okrelanie skojarze plikw .........................................................................................338
Okrelenie informacji dotyczcych domylnej drukarki ...............................................339
Okrelenie aktualnej rozdzielczoci karty graficznej ....................................................340
Dodanie dwiku do aplikacji .......................................................................................340
Odczytywanie zawartoci rejestru systemu Windows i zapisywanie w nim danych ....342

% (    $) *  "+,


 
  &#&  # &
& &#5 &"#5

)/
Okno wprowadzania danych................................................................................................347
Funkcja InputBox jzyka VBA .....................................................................................347
Metoda InputBox Excela ...............................................................................................349
Okno komunikatu funkcja MsgBox jzyka VBA...........................................................351
Metoda GetOpenFilename Excela .......................................................................................354
Metoda GetSaveAsFilename Excela ...................................................................................357
Okno wybierania katalogu ...................................................................................................357
Wybieranie katalogu przy uyciu funkcji interfejsu API systemu Windows................358
Wybieranie katalogu przy uyciu obiektu FileDialog...................................................360
Wywietlanie wbudowanych okien dialogowych Excela....................................................360
Zastosowanie zbioru Dialogs.........................................................................................361
Dodatkowe informacje na temat wbudowanych okien dialogowych............................362
Zastosowanie argumentw z wbudowanymi oknami dialogowymi..............................363
Bezporednie wybieranie pozycji menu ........................................................................363


 $. & '#6 4

(+
Wstawianie nowego formularza UserForm .........................................................................365
Dodawanie kontrolek do formularza UserForm ..................................................................366
Kontrolki okna Toolbox.......................................................................................................367
Kontrolka CheckBox .....................................................................................................367
Kontrolka ComboBox....................................................................................................367
Kontrolka CommandButton ..........................................................................................367
Kontrolka Frame............................................................................................................367
Kontrolka Image ............................................................................................................369
Kontrolka Label.............................................................................................................369
Kontrolka ListBox .........................................................................................................369
Kontrolka MultiPage .....................................................................................................369
Kontrolka OptionButton ................................................................................................369
Kontrolka RefEdit..........................................................................................................370
Kontrolka ScrollBar.......................................................................................................370
Kontrolka SpinButton....................................................................................................370
Kontrolka TabStrip ........................................................................................................370
Kontrolka TextBox ........................................................................................................370
Kontrolka ToggleButton................................................................................................370
Modyfikowanie kontrolek formularza UserForm................................................................370
Modyfikowanie waciwoci kontrolki................................................................................371
Zastosowanie okna Properties .......................................................................................372
Wsplne waciwoci ....................................................................................................373
Zdobywanie dodatkowych informacji o waciwociach..............................................373
Uwzgldnienie wymaga uytkownikw preferujcych korzystanie z klawiatury ......373

Spis treci

11

Wywietlanie i zamykanie formularzy UserForm ...............................................................375


Wywietlanie formularza UserForm .............................................................................375
Zamykanie formularza UserForm .................................................................................377
Procedury obsugi zdarze.............................................................................................378
Przykad tworzenia formularza UserForm...........................................................................378
Tworzenie formularza UserForm ..................................................................................378
Pisanie kodu rdowego procedury wywietlajcej okno dialogowe ..........................381
Testowanie okna dialogowego ......................................................................................381
Dodawanie procedur obsugi zdarze............................................................................382
Sprawdzanie poprawnoci danych.................................................................................384
Ukoczenie tworzenia okna dialogowego.....................................................................384
Zdarzenia powizane z formularzem UserForm..................................................................385
Zdobywanie informacji na temat zdarze .....................................................................385
Zdarzenia formularza UserForm ...................................................................................386
Zdarzenia zwizane z kontrolk SpinButton .................................................................386
Wsppraca kontrolki SpinButton z kontrolk TextBox ...............................................388
Odwoywanie si do kontrolek formularza UserForm ........................................................390
Dostosowywanie okna Toolbox do wasnych wymaga .....................................................391
Modyfikacja ikon lub tekstu podpowiedzi ....................................................................391
Dodawanie nowych zakadek ........................................................................................391
Dostosowywanie lub czenie kontrolek ......................................................................392
Dodawanie nowych kontrolek ActiveX ........................................................................392
Tworzenie szablonw formularzy UserForm ......................................................................393
Lista kontrolna zwizana z tworzeniem formularzy UserForm...........................................394

 )
 ##'#6 4

+
Tworzenie formularza UserForm penicego funkcj menu ...............................................395
Zastosowanie w formularzu UserForm kontrolek CommandButton ............................395
Zastosowanie w formularzu UserForm kontrolki ListBox............................................396
Zaznaczanie zakresw przy uyciu formularza UserForm..................................................397
Tworzenie okna powitalnego...............................................................................................398
Wyczanie przycisku Zamknij formularza UserForm........................................................400
Zmiana wielkoci formularza UserForm .............................................................................401
Powikszanie i przewijanie arkusza przy uyciu formularza UserForm .............................402
Zastosowania kontrolki ListBox ..........................................................................................404
Kontrolka ListBox .........................................................................................................404
Umieszczanie pozycji w kontrolce ListBox ..................................................................405
Identyfikowanie zaznaczonej pozycji............................................................................408
Identyfikowanie wielu zaznaczonych pozycji kontrolki ListBox .................................409
Wiele list w jednej kontrolce ListBox ...........................................................................410
Przenoszenie pozycji kontrolki ListBox........................................................................410
Przemieszczanie pozycji kontrolki ListBox ..................................................................412
Stosowanie wielokolumnowych kontrolek ListBox......................................................413
Zastosowanie kontrolki ListBox do wybierania wierszy arkusza .................................415
Uaktywnianie arkusza za pomoc kontrolki ListBox....................................................417
Zastosowania kontrolki MultiPage ......................................................................................418

 +
 2&&  5&#&'#6 4

)
Wywietlanie wskanika postpu zadania ...........................................................................421
Tworzenie samodzielnego wskanika postpu zadania.................................................422
Wywietlanie wskanika postpu zadania za pomoc kontrolki MultiPage .................424
Wywietlanie wskanika postpu zadania bez korzystania z kontrolki MultiPage.......426
Kreatory interaktywne sekwencje okien dialogowych ...................................................427
Konfigurowanie kontrolki MultiPage w celu utworzenia kreatora ...............................428
Dodawanie przyciskw do formularza UserForm kreatora...........................................428

12

Excel 2003 PL. Programowanie w VBA. Vademecum profesjonalisty

Programowanie przyciskw kreatora ............................................................................429


Zalenoci programowe w kreatorach...........................................................................430
Wykonywanie zada za pomoc kreatorw ..................................................................431
Emulacja funkcji MsgBox ...................................................................................................432
Emulacja funkcji MsgBox: kod funkcji MyMsgBox ....................................................433
Jak dziaa funkcja emulujca MsgBox ..........................................................................434
Wykorzystanie funkcji MyMsgBox ..............................................................................435
Niemodalne okna dialogowe ...............................................................................................435
Obsuga wielu przyciskw formularza UserForm
za pomoc jednej procedury obsugi zdarze...................................................................438
Wybr koloru za pomoc formularza UserForm .................................................................441
Wywietlanie wykresw w formularzach UserForm...........................................................442
Metoda 1. zapisanie wykresu do pliku ..........................................................................443
Metoda 2. zastosowanie kontrolki ChartSpace z pakietu OWC....................................444
Wywietlanie arkuszy w formularzach UserForm...............................................................446
Udostpnianie kontrolki Spreadsheet ............................................................................447
Dodawanie kontrolki Spreadsheet w formularzu UserForm .........................................447
Prosty przykad zastosowania kontrolki Spreadsheet
komponentw sieci WWW pakietu Office ................................................................447
UserForm Deluxe: ulepszony formularz danych .................................................................450
Opis ulepszonego formularza danych............................................................................450
Instalacja dodatku ulepszonego formularza danych.................................................450
Wykorzystanie ulepszonego formularza danych...........................................................451

%

(     - .    +,"

 (
 3 & & -#01

)++
Wprowadzenie .....................................................................................................................455
Zastosowanie jzyka VBA do tworzenia narzdzi ..............................................................456
Co decyduje o przydatnoci narzdzia?...............................................................................456
Operacje tekstowe anatomia narzdzia...........................................................................457
Podstawy tworzenia narzdzia Operacje tekstowe........................................................458
Okrelenie wymaga dla narzdzia Operacje tekstowe ................................................458
Jak dziaa narzdzie Operacje tekstowe?.......................................................................458
Skoroszyt narzdzia Operacje tekstowe ........................................................................459
Formularz UserForm dla narzdzia Operacje tekstowe ................................................459
Modu kodu ThisWorkbook ..........................................................................................461
Modu VBA Module1....................................................................................................462
Modu formularza UserForm1.......................................................................................463
Poprawa wydajnoci narzdzia Operacje tekstowe .......................................................464
Zapisywanie ustawie narzdzia Operacje tekstowe.....................................................465
Implementacja procedury Cofnij ...................................................................................466
Ocena realizacji projektu ...............................................................................................468
Dziaanie narzdzia Operacje tekstowe.........................................................................469
Dodatkowe informacje na temat narzdzi Excela................................................................469

 /
 3%  . &

)/
Wykorzystanie jzyka VBA do tworzenia tabel przestawnych...........................................471
Tworzenie tabel przestawnych ......................................................................................471
Analiza zarejestrowanego kodu tworzenia tabeli przestawnej ......................................473
Ulepszanie zarejestrowanego kodu tworzenia tabeli przestawnej.................................473
Zoone tabele przestawne...................................................................................................474
Dane dla zoonej tabeli przestawnej ............................................................................475
Kod tworzcy tabel przestawn ...................................................................................475
Jak dziaa zoona tabela przestawna?...........................................................................477

Spis treci

13

Tworzenie tabel przestawnych na podstawie zewntrznej bazy danych .............................478


Jednoczesne tworzenie wielu tabel przestawnych ...............................................................479
Modyfikowanie tabel przestawnych ....................................................................................482

 *
 $# #

)*+
Podstawowe wiadomoci o wykresach................................................................................485
Pooenie wykresu.........................................................................................................485
Model obiektu Chart......................................................................................................486
Rejestrowanie makr dotyczcych wykresw .......................................................................487
Zarejestrowany kod makra tworzcego wykres ............................................................487
Ulepszanie zarejestrowanego kodu tworzenia wykresu ................................................489
Popularne techniki jzyka VBA dotyczce wykresw ........................................................489
Wykorzystanie VBA do uaktywnienia wykresu ...........................................................490
Wykorzystanie VBA do deaktywacji wykresu..............................................................491
Sprawdzanie, czy wykres uaktywniono.........................................................................492
Usuwanie elementw z kolekcji ChartObjects lub Charts ............................................492
Formatowanie wykresw za pomoc VBA ...................................................................493
Przetwarzanie wszystkich wykresw w ptli ................................................................494
Zmiana rozmiarw i wyrwnywanie obiektw ChartObject ........................................494
Inne techniki przetwarzania wykresw................................................................................496
Zastosowanie nazw w formule SERIE ..........................................................................496
Zastosowanie jzyka VBA w celu okrelenia danych
wykorzystywanych na wykresie.................................................................................497
Zastosowanie jzyka VBA w celu okrelenia zakresu danych
wykorzystywanych na wykresie.................................................................................500
Wykorzystanie VBA do wywietlania dowolnych etykiet danych na wykresie ...........503
Wywietlanie wykresu w oknie UserForm....................................................................505
Zdarzenia zwizane z wykresami ........................................................................................507
Przykad wykorzystania zdarze zwizanych z wykresami ..........................................507
Obsuga zdarze dla wykresw wbudowanych.............................................................511
Zastosowanie zdarze dla wykresw wbudowanych ....................................................512
Jak uatwi sobie prac z wykresami? .................................................................................514
Drukowanie wbudowanych wykresw..........................................................................515
Tworzenie martwych wykresw ................................................................................515
Wykorzystanie zdarzenia MouseOver do wywietlania tekstu .....................................517
Wykresy animowane .....................................................................................................518
Tworzenie wykresu krzywych hipocykloidalnych ........................................................519
Tworzenie wykresu-zegara............................................................................................520
Co mona zrobi z wykresami bez uycia makr?................................................................522
Sterowanie seriami danych za pomoc automatycznego filtrowania............................522
Zapisywanie wielu wykresw w arkuszu-wykresie ......................................................523
Tworzenie samorozszerzajcego si wykresu ...............................................................524
Tworzenie interaktywnego wykresu..............................................................................530


 %" 7

+ +
Typy zdarze, ktre mona monitorowa w Excelu............................................................535
Najwaniejsze informacje o zdarzeniach.............................................................................536
Sekwencje zdarze ........................................................................................................536
Gdzie naley umieci procedury obsugi zdarze?......................................................537
Wyczanie obsugi zdarze ..........................................................................................538
Wprowadzanie kodu procedury obsugi zdarze...........................................................539
Procedury obsugi zdarze z argumentami....................................................................540
Zdarzenia poziomu skoroszytu ............................................................................................541
Zdarzenie Open..............................................................................................................541
Zdarzenie Activate.........................................................................................................543

14

Excel 2003 PL. Programowanie w VBA. Vademecum profesjonalisty

Zdarzenie SheetActivate................................................................................................543
Zdarzenie NewSheet......................................................................................................544
Zdarzenie BeforeSave....................................................................................................544
Zdarzenie Deactivate .....................................................................................................544
Zdarzenie BeforePrint....................................................................................................545
Zdarzenie BeforeClose ..................................................................................................546
Zdarzenia poziomu arkusza .................................................................................................547
Zdarzenie Change ..........................................................................................................547
Monitorowanie modyfikacji w wybranym zakresie komrek.......................................549
Zdarzenie SelectionChange ...........................................................................................551
Zdarzenie BeforeRightClick..........................................................................................552
Zdarzenia dotyczce wykresw ...........................................................................................553
Zdarzenia dotyczce aplikacji..............................................................................................553
Wczenie obsugi zdarze poziomu aplikacji ..............................................................554
Sprawdzanie, czy skoroszyt jest otwarty.......................................................................556
Monitorowanie zdarze poziomu aplikacji ...................................................................557
Zdarzenia dotyczce formularzy UserForm ........................................................................558
Zdarzenia niezwizane z obiektami .....................................................................................559
Zdarzenie OnTime.........................................................................................................560
Zdarzenie OnKey...........................................................................................................561


 8& - &&#.-

+(
Uruchamianie innych aplikacji z poziomu Excela ..............................................................563
Zastosowanie funkcji Shell jzyka VBA.......................................................................563
Zastosowanie funkcji Windows API ShellExecute .......................................................566
Uaktywnianie aplikacji z poziomu Excela...........................................................................567
Wykorzystanie instrukcji AppActivate .........................................................................567
Uaktywnianie aplikacji pakietu Microsoft Office .........................................................567
Uruchamianie okien dialogowych Panelu sterowania .........................................................568
Wykorzystanie automatyzacji..............................................................................................569
Dziaania z obiektami innych aplikacji z wykorzystaniem automatyzacji....................569
Wczesne i pne wizanie.............................................................................................570
Prosty przykad pnego wizania ................................................................................572
Zarzdzanie Wordem z poziomu Excela .......................................................................573
Zarzdzanie Excelem z poziomu innej aplikacji ...........................................................576
Wysyanie spersonalizowanych wiadomoci e-mail z wykorzystaniem Outlooka .............577
Dziaania z obiektami danych ActiveX (ADO) ...................................................................579
Wysyanie wiadomoci e-mail z zacznikami z poziomu Excela ......................................581
Zastosowanie metody SendKeys .........................................................................................582


 3 & ##& 9

+*+
Czym s dodatki?.................................................................................................................585
Porwnanie dodatku ze standardowym skoroszytem....................................................585
Po co tworzy si dodatki?..............................................................................................586
Meneder dodatkw Excela.................................................................................................587
Tworzenie dodatkw............................................................................................................588
Przykadowy dodatek...........................................................................................................589
Konfiguracja skoroszytu dla przykadowego dodatku ..................................................589
Testowanie skoroszytu uytego do utworzenia przykadowego dodatku .....................589
Wprowadzanie opisu dla przykadowego dodatku........................................................590
Utworzenie dodatku.......................................................................................................590
Instalowanie dodatku.....................................................................................................592
Dystrybucja dodatkw...................................................................................................592
Modyfikowanie dodatku................................................................................................592

Spis treci

15

Porwnanie plikw XLA i XLS ..........................................................................................594


Rozmiar i struktura plikw XLS i XLA ........................................................................594
Pliki XLA przynaleno do kolekcji z poziomu VBA ...........................................594
Widoczno plikw XLS i XLA ...................................................................................594
Arkusze i wykresy w plikach XLS i XLA.....................................................................595
Dostp do procedur VBA w dodatku ............................................................................596
Przykady przetwarzania dodatkw za pomoc kodu VBA ................................................597
Kolekcja AddIns ............................................................................................................598
Waciwoci obiektu AddIn...........................................................................................599
Zdarzenia zwizane z obiektami Addin.........................................................................602
Optymalizacja wydajnoci dodatkw ..................................................................................602
Maksymalizacja szybkoci kodu dodatkw ..................................................................602
Kontrolowanie rozmiaru pliku dodatku.........................................................................603
Problemy z dodatkami .........................................................................................................604
Zapewnienie zainstalowania dodatku............................................................................604
Odwoywanie si do innych plikw z poziomu dodatku...............................................605
Wykrywanie waciwej wersji Excela dla dodatku .......................................................605

% /    0!



 3 & .9&

(
Paski narzdzi ......................................................................................................................609
Dziaania z paskami narzdzi ..............................................................................................609
Jak Excel zarzdza paskami narzdzi? ................................................................................610
Przechowywanie paskw narzdzi ................................................................................610
Problemy z dziaaniem paskw narzdzi.......................................................................611
Rczne dostosowywanie paskw narzdzi ..........................................................................611
Tryb dostosowywania paskw narzdzi ........................................................................612
Dystrybucja paskw narzdzi uytkownika ..................................................................615
Dziaania z kolekcj CommandBars....................................................................................617
Rodzaje paskw narzdzi ..............................................................................................617
Wywietlenie wszystkich obiektw CommandBar .......................................................617
Tworzenie paskw narzdzi ..........................................................................................618
Odwoywanie si do paskw narzdzi w VBA .............................................................619
Usuwanie paska narzdzi za pomoc kodu VBA..........................................................620
Waciwoci paskw narzdzi .......................................................................................620
Odwoywanie si do kontrolek na pasku narzdzi ........................................................625
Wyszczeglnienie kontrolek na pasku narzdzi............................................................626
Wywietlanie wszystkich kontrolek na wszystkich paskach narzdzi ..........................627
Dodawanie kontrolki na pasku narzdzi........................................................................628
Usuwanie kontrolki z paska narzdzi ............................................................................628
Waciwoci kontrolek paskw narzdzi.......................................................................629


 3 &  &

(
Pasek menu w Excelu ..........................................................................................................639
Modyfikowanie menu Excela przez uytkownika...............................................................640
Pojcia zwizane z systemem menu Excela ..................................................................640
Usuwanie elementw menu Excela...............................................................................641
Dodawanie elementw menu Excela.............................................................................641
Modyfikacja elementw menu Excela ..........................................................................642
Wykorzystanie jzyka VBA do dostosowywania menu w Excelu......................................642
Wywietlanie informacji o menu Excela.......................................................................643
Dodawanie nowego menu na pasku menu ....................................................................644
Usuwanie menu z paska menu.......................................................................................646
Dodawanie pozycji menu ..............................................................................................647

16

Excel 2003 PL. Programowanie w VBA. Vademecum profesjonalisty

Wywietlanie klawisza skrtu wraz z nazw polecenia ................................................650


Odtwarzanie menu, ktre zostao usunite ....................................................................651
Wykorzystanie zdarze do programowania menu...............................................................652
Automatyczne dodawanie i usuwanie menu .................................................................652
Dezaktywacja lub ukrywanie menu...............................................................................653
Dziaania z poleceniami menu powizanymi z polami wyboru ....................................654
Tworzenie menu uytkownika atwy sposb..................................................................657
Utworzenie zastpczego paska menu arkusza kalkulacyjnego............................................659
Operacje z menu podrcznymi ............................................................................................660
Dodawanie pozycji do menu podrcznych....................................................................662
Usuwanie pozycji z menu podrcznych ........................................................................663
Dezaktywacja pozycji menu podrcznych ....................................................................663
Dezaktywacja menu podrcznych .................................................................................663
Przywracanie ustawie menu podrcznych...................................................................664
Tworzenie nowych menu podrcznych .........................................................................664

)
 3 & # 9.#.-5

((/
Dlaczego naley tworzy systemy pomocy w aplikacjach? ................................................667
Systemy pomocy wykorzystujce komponenty Excela.......................................................668
Wykorzystanie komentarzy w celu tworzenia systemw pomocy................................668
Wykorzystanie pl tekstowych w celu utworzenia systemu pomocy ...........................670
Wykorzystanie arkusza do wywietlania tekstu pomocy ..............................................670
Wywietlanie pomocy w oknie UserForm ....................................................................671
Wykorzystanie asystenta pakietu Office do wywietlania pomocy ..............................674
Symulacja waciwoci Co to jest? za pomoc formularza UserForm ................................676
Wykorzystanie systemu HTML Help ..................................................................................677
Powizanie pliku pomocy z aplikacj..................................................................................678
Wizanie tematw pomocy z funkcjami VBA ....................................................................679
Inne sposoby wywietlania plikw pomocy HTML Help ...................................................680
Wykorzystanie metody Help .........................................................................................680
Wywietlanie pomocy z okna informacyjnego .............................................................680
Wywietlanie pomocy z okna InputBox........................................................................681

+
 3 & .-#"&#5:#&

(*
Co to jest aplikacja user-oriented?.......................................................................................683
Przykadowa aplikacja Kreator amortyzacji poyczek ...................................................683
Obsuga Kreatora amortyzacji poyczek.......................................................................683
Struktura skoroszytu Kreatora amortyzacji poyczek ...................................................685
Jak dziaa Kreator amortyzacji poyczek? ....................................................................686
Potencjalne usprawnienia Kreatora amortyzacji poyczek ...........................................690
Wskazwki dotyczce projektowania aplikacji ...................................................................690

%  .
 01"
(
 % #"&;

( +
Co to jest zgodno? ............................................................................................................695
Rodzaje problemw zgodnoci ............................................................................................696
Obsugiwane formaty plikw Excela...................................................................................697
Kiedy trzeba unika nowych waciwoci? .........................................................................698
Czy aplikacja bdzie dziaa na komputerach Macintosh?..................................................698
Tworzenie aplikacji dla wielu wersji narodowych ..............................................................699
Aplikacje obsugujce wiele jzykw ...........................................................................701
Obsuga jzyka w kodzie VBA .....................................................................................702
Wykorzystanie waciwoci lokalnych..........................................................................702
Identyfikacja ustawie systemu.....................................................................................703
Ustawienia daty i godziny .............................................................................................705

Spis treci

17

/
 . - &.5#&#& .01

//
Wykonywanie popularnych operacji na plikach..................................................................707
Wykorzystanie polece jzyka VBA do wykonywania operacji na plikach.................707
Wykorzystanie obiektu FileSearch................................................................................710
Wykorzystanie obiektu FileSystemObject ....................................................................711
Wyszukiwanie plikw zawierajcych okrelony tekst ..................................................713
Operacje z plikami tekstowymi ...........................................................................................714
Otwieranie plikw tekstowych ......................................................................................714
Czytanie plikw tekstowych..........................................................................................715
Zapisywanie danych do plikw tekstowych..................................................................716
Uzyskanie numeru pliku................................................................................................716
Okrelanie lub ustawianie pozycji w pliku....................................................................716
Instrukcje pozwalajce na odczytywanie i zapisywanie plikw ...................................716
Przykady wykonywania operacji na plikach ......................................................................717
Importowanie danych z pliku tekstowego .....................................................................717
Eksportowanie zakresu do pliku tekstowego.................................................................718
Importowanie pliku tekstowego do zakresu ..................................................................719
Rejestrowanie wykorzystania Excela ............................................................................720
Filtrowanie pliku tekstowego ........................................................................................721
Importowanie wicej ni 256 kolumn danych do skoroszytu .......................................721
Eksportowanie zakresu do pliku HTML .......................................................................723
Eksportowanie zakresu do pliku XLM..........................................................................726

*
 . - &.& &5-#01

/
Podstawowe informacje o rodowisku IDE.........................................................................729
Model obiektw rodowiska IDE ........................................................................................730
Kolekcja VBProjects .....................................................................................................731
Wywietlanie wszystkich komponentw projektu VBA .....................................................733
Zastpowanie moduu uaktualnion wersj .........................................................................734
Wykorzystanie jzyka VBA do generowania kodu VBA....................................................736
Wykorzystywanie kodu VBA do umieszczenia kontrolek w formularzu UserForm
w fazie projektowania.......................................................................................................738
Operacje z formularzami UserForm w fazie projektowania i wykonania.....................738
Dodanie 100 przyciskw CommandButton w fazie projektowania ..............................739
Programowe tworzenie formularzy UserForm ....................................................................741
Prosty przykad formularza UserForm ..........................................................................741
Skomplikowany przykad dynamicznego formularza UserForm..................................743


 <#

/)
Czym jest modu klasy? .......................................................................................................749
Przykad: utworzenie klasy NumLock.................................................................................750
Wstawianie moduu klasy..............................................................................................750
Dodawanie kodu VBA do moduu klasy.......................................................................751
Wykorzystanie klasy NumLock ....................................................................................753
Dodatkowe informacje na temat moduw klas ..................................................................754
Nadawanie nazwy klasie obiektw................................................................................754
Programowanie waciwoci obiektw .........................................................................754
Programowanie metod obiektw ...................................................................................756
Zdarzenia definiowane w module klasy ........................................................................757
Przykad: klasa CSVFileClass .............................................................................................757
Zmienne poziomu moduu dla klasy CSVFileClass......................................................757
Definicje waciwoci klasy CSVFileClass...................................................................758
Definicje metod klasy CSVFileClass ............................................................................758
Wykorzystanie obiektw CSVFileClass .......................................................................760

18

Excel 2003 PL. Programowanie w VBA. Vademecum profesjonalisty

 
 ,& .#&& ."& 

/(
Pytania dotyczce Excela.....................................................................................................764
Pytania dotyczce edytora Visual Basic ..............................................................................768
Pytania dotyczce procedur .................................................................................................771
Pytania dotyczce funkcji ....................................................................................................776
Pytania dotyczce obiektw, waciwoci, metod i zdarze................................................779
Pytania dotyczce formularzy UserForm ............................................................................788
Pytania dotyczce dodatkw................................................................................................793
Pytania dotyczce paskw polece......................................................................................795

2
 11
=  2%#&& #  

*
Pomoc techniczna Microsoftu .............................................................................................801
Opcje pomocy technicznej.............................................................................................801
Baza wiedzy firmy Microsoft ........................................................................................802
Macierzysta strona programu Microsoft Excel .............................................................802
Narzdzia pakietu Microsoft Office w internecie..........................................................802
Internetowe grupy dyskusyjne .............................................................................................802
Grupy dyskusyjne powicone arkuszom kalkulacyjnym.............................................803
Grupy dyskusyjne Microsoftu .......................................................................................803
Wyszukiwanie informacji w grupach dyskusyjnych .....................................................804
Witryny WWW....................................................................................................................805
Strona Spreadsheet ........................................................................................................805
Pearson Software Consulting.........................................................................................805
Strona o Excelu Stephena Bullena.................................................................................805
Strony o Excelu Davida McRitchie ...............................................................................806
Strona o Excelu Jona Peltiera ........................................................................................806
Mr. Excel .......................................................................................................................806
Najczciej zadawane pytania .......................................................................................806

= 1

8&- '&- 01

*/
Wywoywanie funkcji Excela w instrukcjach VBA ............................................................810

= , >#%901

* /
= = 2;?.##,=@<

*
Wymagania systemowe .......................................................................................................821
Korzystanie z pyty CD-ROM w systemie Windows..........................................................821
Co znajduje si na pycie CD-ROM ....................................................................................822
Materiay utworzone przez autora tej ksiki................................................................822
Aplikacje........................................................................................................................834
Rozwizywanie problemw.................................................................................................835



* /

Rozdzia 17.

 
 
Wedug niektrych uytkownikw Excela tabele przestawne s jego najbardziej innowacyjn i oferujc najwiksze moliwoci waciwoci. Jest to take unikatowa cecha
Excela (aden inny arkusz kalkulacyjny ni nie dysponuje). Po raz pierwszy pojawia
si w Excelu 5.
Ten rozdzia nie jest wprowadzeniem w tematyk tabel przestawnych. Zakadam, e
czytelnicy znaj t waciwo i potrafi rcznie tworzy i modyfikowa tabele. Jak
wiadomo, utworzenie tabeli przestawnej na podstawie danych z bazy danych lub listy
umoliwia wykonywanie podsumowa danych w sposb, ktry bez ich zastosowania
nie byby moliwy. Poza tym jest to sposb niezwykle szybki. Dodatkowo tabele przestawne mona tworzy i modyfikowa za pomoc kodu w jzyku VBA.
Tabele przestawne Excela znacznie ulepszono w Excelu 2000. Wykorzystano tam
wydajniejsze metody buforowania danych, a take wprowadzono obsug wykresw
powizanych z tabelami przestawnymi. Z tego powodu pewna cz materiau
zawartego w niniejszym rozdziale nie dotyczy Excela 97 lub wersji wczeniejszych.

 
  
     
 
W tym podrozdziale zaprezentowano prosty przykad wykorzystania jzyka VBA w celu
utworzenia tabeli przestawnej. Baza danych, pokazana na rysunku 17.1, zawiera cztery
pola: , 
,

 i . Kady rekord opisuje wielko sprzeday
jednego reprezentanta handlowego w okrelonym miesicu.


 

Na rysunku 17.2 pokazano tabel przestawn utworzon na podstawie danych. Wykonuje ona podsumowania sprzeday wedug reprezentantw handlowych oraz miesicy.
Zawiera nastpujce pola:
 
 pole strony w tabeli przestawnej;
  pole wiersza w tabeli przestawnej;


 pole kolumny w tabeli przestawnej;
  pole danych w tabeli przestawnej, w ktrym wykorzystano funkcj  .

472

Cz V  Zaawansowane techniki programowania



Z tej prostej bazy
danych atwo mona
utworzy tabel
przestawn



Tabela przestawna
utworzona
na podstawie danych
zamieszczonych
na rysunku 17.1

Zanim utworzyem t tabel przestawn, wczyem rejestrator makr. Wygenerowany


kod zaprezentowano poniej:


 
  

    !"##$
  %&'()*
+,$
 +()-.!(/!0 $
!  %

%
+ (),$
%
1()%
'-,$
+2
3 ()*
 %
3 4
"  %
-#$
%
+ ()"!

 /,
"!

 /, 

""  %
 %
'- $
  5
#  
6 )*
5
#
  )

Rozdzia 17.  Tabele przestawne

473

7#"
""  %
 %
'- $
  5
# '8#

6 )*
 5
#
  )
7#"
""  %
 %
'- $
  5
# 9
6 )*
!
5
#
  )
7#"
"  %
 %
'- $
##+5
#"  %
 %
'- $
  5
# '-#: ,-'-#:,*

7#

Kod wygenerowany przez rejestrator makr zaley od sposobu, w jaki utworzylimy tabel przestawn. W przykadzie utworzyem tabel przestawn, ktra bya pusta, dopki
nie przecignem pola z paska narzdzi Tabela przestawna. Alternatywn metod jest
kliknicie przycisku Ukad w drugim kroku kreatora Tabela przestawna i zdefiniowanie
ukadu tabeli przestawnej przed jej utworzeniem.
Mona oczywicie wykona zarejestrowane makro, co spowoduje utworzenie kolejnej,
identycznej tabeli przestawnej.

   
  

  

Kod jzyka VBA dotyczcy dziaa z tabelami przestawnymi moe si wydawa niejasny.
Aby zarejestrowane makro nabrao sensu, trzeba pozna kilka obiektw (opis kadego
z nich znajduje si w pomocy online):
 
  zbir obiektw 
  obiektu   ;
 
  zbir obiektw 
  obiektu   ;
 
 
 zbir pl obiektu 
 ;
 
  ! zbir danych dla pola okrelonej kategorii;
 
  metoda obiektu 
  tworzca tabel przestawn

na podstawie danych w buforze tabeli przestawnej;


 
 
 metoda obiektu    tworzca tabel przestawn.

Jak si przekonamy w nastpnym punkcie, korzystanie z tej metody nie jest


konieczne.

    


  

  

Podobnie jak w przypadku wikszoci zarejestrowanych makr, zaprezentowany wczeniej
przykad nie jest tak wydajny, jak mgby by. Mona go uproci i uczyni bardziej
zrozumiaym. Kod z listingu 17.1 pozwoli utworzy identyczn tabel przestawn.

474

Cz V  Zaawansowane techniki programowania


Lepszy sposb generowania tabeli przestawnej za pomoc kodu VBA
!  %

+ %!"  !"
+ %  %

 %!")    !"##$
  %&'()*
+,$
 +()  ! ##
 %) %!"!  %
$
 %
+ (),$
%
1()%
'-
" %
  5
#   6 )*
5
#
  5
# 9 6 )*
!
5
#
  5
# '8#
 6 )*
 5
#
  5
# '-#: 6 )*
+5
#
7#"
7#

Procedur 
  uproszczono (co moe przyczyni si do zwikszenia jej
przejrzystoci), deklarujc tylko dwie zmienne obiektowe:  oraz . Zastpuj
one indeksowane odwoania do pl 
"
  oraz 
"
 #
 . Nowy obiekt 
  tworzy si za pomoc metody , a nowy obiekt

  za pomoc metody 
  obiektu 
 . W ostatniej sekcji
kodu nastpuje dodanie pl do tabeli przestawnej i okrelenie lokalizacji wewntrz niej
(pola strony, kolumny, wiersza i danych).
W pierwotnie wygenerowanym makrze znajdowa si zakodowany na twardo zakres
danych sucy do utworzenia obiektu 
  (tzn. $% &'&&(&)*$). W procedurze 
  tabela przestawna jest tworzona na podstawie biecego regionu otaczajcego komrk &. Dziki temu zyskujemy pewno, e makro bdzie
dziaa poprawnie po wprowadzeniu dodatkowych danych.
Kod byby bardziej uniwersalny, gdyby w zbiorze  5
# zastosowano indeksy
zamiast literaw. W ten sposb makro dziaaoby nawet wtedy, gdy uytkownik
zmieniby nagwki kolumn. Na przykad bardziej uniwersalny kod zawieraby odwoanie
 5
#  zamiast  5
#   . Kod zastosowany w pokazanym
przykadzie najlepiej pasuje do sytuacji, kiedy ukad kolumn nie bdzie si zmienia.

Najlepszym sposobem poznania potrzebnych obiektw, metod i waciwoci jest jak zwykle
zarejestrowanie wykonywanych dziaa w makrze. Nastpnie warto przestudiowa tematy
pomocy online, aby zrozumie sposb uycia poszczeglnych elementw. Niemal w kadym przypadku zarejestrowane makra wymagaj modyfikacji. Mona te napisa kod od
pocztku, bez wykorzystywania rejestratora makr, ale to wymaga pewnego dowiadczenia.

   
 
W tym podrozdziale zaprezentuj kod VBA tworzcy stosunkowo zoon tabel przestawn.

Rozdzia 17.  Tabele przestawne

475

   
  

Na rysunku 17.3 zaprezentowano fragment bazy danych w arkuszu, zbudowanej z 15 840
wierszy zawierajcych hierarchiczne dane budetowe firmy. Korporacja skada si z 5
oddziaw, a kady oddzia z 11 wydziaw. W kadym wydziale s cztery kategorie
budetowe, a kada kategoria zawiera po kilka pozycji. Kwoty budetu oraz rzeczywicie
wydane rodki s zapisane dla kadego z 12 miesicy.


Dane z tego
skoroszytu bd
zestawione w tabeli
przestawnej

Ten przykad jest dostpny na pycie CD-ROM doczonej do ksiki.

Na rysunku 17.4. pokazano tabel przestawn utworzon na podstawie zaprezentowanych wyej danych. Warto zwrci uwag, e tabela przestawna zawiera obliczane pole
+,
 oraz cztery obliczane pola -.&, -./, -.) i -.*, zawierajce podsumowania
dla poszczeglnych kwartaw.



  

Kod VBA z listingu 17.2 tworzy tabel przestawn.

Tworzenie tabeli przestawnej dla wielu oddziaw
!  %

+ %!"  !"
+ %  %

''
 ;'#)5


476

Cz V  Zaawansowane techniki programowania



Tabela przestawna
utworzona
na podstawie danych
z rysunku 17.3

;<--%
 -,=

67 1*
''
 +'
&
)5

" -%
 - +

67 > % 4
''
 +'
&
)%
; -2 
'-
 %!")    !"## $
 %&'()*
+,$
 +()  ! ##
+ #  -
 "##
"1)-%
 -
; -
'-' #2 
 %) %!"!  %
 $
%
+ ()" -%
 -   ,$
%
1()%
 -?#:
" %
+ #'@

  5
# A+BC 6 )*
 5
#
  5
# B7BD! 6 )*
! E5
#
  5
# 6++BC 6 )*
5
#
  5
# ?;+F7% 6 )*
+5
#
  5
# 7!AB%7A+%GB 6 )*
+5
#
+ #'
H:9 #  
- #"&

!

#5
###6#"&
,)?;+F7%I7!AB%7A+%GB
  5
# 6#"&
 6 )*
+5
#

Rozdzia 17.  Tabele przestawne

477

+ #'@
 
-&"
  5
# B7BD! !

#B##$
G
,)&JEJ
  5
# B7BD! !

#B##$
GK,)GJJ!-
  5
# B7BD! !

#B##$
G/,)E'JJ-
  5
# B7BD! !

#B##$
G0,) LJEJ>
 - 
-&"' -&
  5
# B7BD!   B G 
  5
# B7BD!   B GK 
  5
# B7BD!   B G/ 
  5
# B7BD!   B G0 

 )0
 )M
 )K
 )N

 #&2' #'@


  5
# -?;+F7% !' )?#: -H 
  5
# -7!AB%7A+%GB !' )--&&# -H 
  5
# -6#"&
 !' )6#"&
 -H 
7#"
''
 ;'#)%
7#

   
 
 !
Procedura 
  z listingu 17.2 najpierw usuwa arkusz % 
#
.0, jeeli taki wczeniej istnia. Nastpnie tworzy obiekt 
 , wstawia nowy
arkusz o nazwie % 
 .0 i w kocu tworzy tabel przestawn. Do tabeli
przestawnej dodawane s nastpujce pola:
 ,
1 pole wiersza;


 pole kolumny;
 +
1 pole strony;
 2% pole danych;
 ,.
3.,
pole danych.

Nastpnie wykorzystano metod  zbioru %


 w celu utworzenia obliczanego pola +,
, ktrego warto jest wyliczana poprzez odjcie wartoci faktycznie
wydanej kwoty (pole 4546 53 67- ) od kwoty budetu (pole 2785). Cztery
obliczane pola su do wyliczenia kwartalnych podsumowa. Domylnie obliczane pola
s dodawane po prawej stronie tabeli przestawnej, a zatem potrzebny jest dodatkowy
kod, aby umieci je obok miesicy, ktrych dotycz (np. pole -. jest umieszczone za
polem ). Na koniec kod modyfikuje podpisy wywietlane w tabeli przestawnej (np.
nazwa %!332785 jest zastpowana nazw 2%391:).
Tworzc t procedur, najpierw wygenerowaem kod za pomoc rejestratora makr,
a nastpnie go poprawiem, aby sta si czytelniejszy i wydajniejszy.

478

Cz V  Zaawansowane techniki programowania

     
 

       
W poprzednim przykadzie rdem danych by arkusz. Jak wiadomo, Excel umoliwia
wykorzystanie zewntrznych rde danych do tworzenia tabel przestawnych. Przykad
zaprezentowany w tym podrozdziale demonstruje kod VBA potrzebny do utworzenia
tabeli przestawnej na podstawie danych zapisanych w bazie danych Access.
Baza danych Accessa zawiera pojedyncz tabel, w ktrej umieszczono te same
dane, ktrych uyto w poprzednim przykadzie.

Kod z listingu 17.3 tworzy tabel przestawn. Zaoono, e plik bazy danych budet.
mdb jest zapisany w tym samym katalogu, co arkusz.

 Generowanie tabeli przestawnej na podstawie danych z zewntrznej bazy danych
!  %
5 +?
+ %!"  !"
+ %  %

++?5

+! 
+O&
;<- -,:

67 1*
''
 +'
&
)5

"  - +

67 > % 4
; -2 
'-
 %!")    !"##$
  %&'()*
7*

P:# '
-&#&"
+?5
)%"   "QR#:#
CS"' H9-
! )6+?!(+1)+T+?O)Q+?5

'&
O&)7E7!%U56?;+F7%
" %!"
!  )! 
! #%*)O&
7#"
+ #-
 "##
"1) -
; -
'-
 %) %!"!  %
 $

Rozdzia 17.  Tabele przestawne

479

%
+ ()"  -   ,$
%
1()?#: -
" %
+ #'@

  5
# A+BC 6 )*
 5
#
  5
# B7BD! 6 )*
! E5
#
  5
# 6++BC 6 )*
5
#
  5
# ?;+F7% 6 )*
+5
#
  5
# 7!AB%7A+%GB 6 )*
+5
#
7#"
7#

Argument  %, metody  zbioru 


  okrelono jako ;5;.
W przykadzie zaprezentowanym w poprzednim podrozdziale (w ktrym wykorzystano
dane z bazy danych w arkuszu) argument  %, by typu ;7 . Obiekt

  w celu pobrania danych z pliku zewntrznego potrzebuje nastpujcych informacji:
 acucha poczenia opisujcego typ rda danych oraz nazw pliku,
 acucha zapytania, ktrym jest instrukcja SQL okrelajca zwracane rekordy i pola.

W tym przykadzie acuch poczenia okrela rdo danych ODBC, ktrym jest plik
Accessa o nazwie budet.mdb. acuch zapytania okrela w tym przypadku ca tabel
2785. Informacje te s przekazywane do obiektu 
  poprzez ustawienie waciwoci  
 oraz  !!;. Po zapisaniu danych w buforze tabeli przestawnej
nastpuje utworzenie tabeli za pomoc metody 
 .
SQL jest standardowym jzykiem sucym do tworzenia zapyta do bazy danych.
Wicej informacji mona uzyska w pomocy online. Warto rwnie zakupi ksik
powicon temu jzykowi, co pozwoli pozna go dokadniej.

  
      
 
W ostatnim przykadzie utworzymy kilka tabel przestawnych, ktre bd zawieray
podsumowania danych pobranych z ankiety wypenianej przez klientw. Dane s zapisane
w bazie danych w arkuszu (rysunek 17.5) zoonej ze 100 wierszy. Kady wiersz zawiera
dane o pci respondenta oraz odpowied od 1 do 5 dla kadej z 14 pozycji ankiety.
Na rysunku 17.6 pokazano kilka tabel przestawnych. Dla kadej pozycji ankiety utworzono
dwie tabele przestawne jedna wywietla dane w procentach, druga rzeczywiste wartoci.
Kod VBA z listingu 17.4 tworzy te tabele.

 Tworzenie wielu tabel przestawnych na podstawie danych ze zoonej zewntrznej bazy
danych
  %

%' # -&KM
'-&"
+ %!"  !"
+ %  %


480

Cz V  Zaawansowane techniki programowania



Wyniki ankiety
bd podsumowane
w kilku tabelach
przestawnych


 Tabele przestawne utworzone za pomoc procedury VBA

Rozdzia 17.  Tabele przestawne

+&" "
+B1
+ B,B
''
 ;'#)5

;<- # ,:

67 1*
''
 +'
&
)5

"  #  +

67 > % 4
+ #- # 
&") "##
"1) # 
; -2 
'-
 %!")    !"## $
 %&'()*
+,$
 +()" +&   $
! ##
 )
5 )% 0
B1)" +& !

 ,JK
; -
'-
 %) %!"!  %
$
 %
+ ()&"!

  ,N ,$
%
1()B1
 ) J
+ #'@

" %  5
# B1
6 )*
+5
#
1)E- #' #-
5 )*
! 
7#"
 %##5
# 5
#()& B1,+
 %  5
#  HV 6 )*
!
5
#
1*
 )
5 )% 0
B1)" +& !

 ,JK
; -
'-
 %) %!"!  %
$
 %
+ ()&"!

  , ,$
%
1()B1QK
 ) J
" %  5
# B1
6 )*
+5
#
1)  
5 )*
! 

481

482

Cz V  Zaawansowane techniki programowania

!

 )*
62!

7#"
 %##5
# 5
#()& B1,+
 %  5
#  HV 6 )*
!
5
#
1*

- ' &
&"
" (,5(5
'
,G &-<-#-
'
K,1-#-<
'
/,W-#&# &
'
0,#-<
'
X,!H <-#-
7#"
 & -  =

!
 (B 7!
 5
7#

Tabele przestawne s tworzone w dwch ptlach, wszystkie na podstawie jednego obiektu



 . Pocztek kadej kolejnej tabeli przestawnej jest wyliczany na podstawie
zmiennej  .. Po utworzeniu tabeli kod zamienia kategorie liczbowe w pierwszej kolumnie
na tekst (np. warto & jest zastpowana tekstem Kategorycznie si nie zgadzam). Na
kocu s korygowane szerokoci kolumn.

!    


 
Tabele przestawne Excela s elastyczne. Uytkownicy mog z atwoci zamieni pole
wiersza z polem kolumny lub ukry niektre pozycje w tabeli, nieistotne w danym momencie. Mona wprowadzi wasne elementy interfejsu, ktre jeszcze bardziej uatwi
modyfikacje. W przykadzie zaprezentowanym w tym podrozdziale pokazano tabel
przestawn, ktrej wygldem mona sterowa za pomoc przecznikw oraz pl wyboru
tak, jak pokazano na rysunku 17.7.



Uytkownik moe
skorzysta
z formantw w celu
modyfikowania tabel
przestawnych

Rozdzia 17.  Tabele przestawne

483

Tabela przestawna zawiera cztery dodatkowe pola obliczane (-., -./, -.) i -.*), ktre
su do obliczania podsumowa kwartalnych. Kod wykonywany w przypadku zaznaczenia pierwszej wartoci przecznika (Tylko miesice) pokazuje listing 17.5. Procedura
jest prosta, przypomina procedury obsugi zdarze dla innych przecznikw.

 Modyfikacja tabeli przestawnej
6' ? $!

%&
 9
''
 ;'#)5

""  %
    5
# 9
  B & 3
)%
  B E 3
)%
  B  3
)%
  B G 3
)%
  B  3
)%
  B !- 3
)%
  B E' 3
)%
  B  3
)%
  B - 3
)%
  B  L 3
)%
  B E 3
)%
  B > 3
)%
  B G 3
)5

  B GK 3
)5

  B G/ 3
)5

  B G0 3
)5

7#"
7#

Pola wyboru powoduj wczanie (wyczanie) podsumowa dla wierszy i kolumn.


Procedury obsugi tych zdarze zaprezentowano poniej:
!"? *$!

 # 

''
 ;'#)5

"  %
  !
>#)!"? *3

7#Y
!"? *K$!
 # -&
''
 ;'#)5

"  %
   >#)!"? *K3

7#

Tabele przestawne mona oczywicie modyfikowa w rny sposb. Jak wspomniaem,


najprostszym sposobem utworzenia kodu VBA, ktry modyfikuje tabele przestawne,
jest wykorzystanie rejestratora makr podczas rcznych modyfikacji. Nastpnie wystarczy
wprowadzi poprawki w kodzie i skopiowa go do procedur obsugi zdarze wybranych
formantw.

You might also like