You are on page 1of 25

Programowanie

w Excelu 2007 PL.


Niebieski podrcznik
Autor: Denise Etheridge
Tumaczenie: Pawe Koronkiewicz
ISBN: 978-83-246-1663-3
Tytu oryginau: Microsoft Office Excel 2007
Programming: Your visual blueprint for creating
interactive spreadsheets (Visual Blueprint)
Format: 170x230, stron: 360

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

Wykorzystaj niezwyke moliwoci Excela i spraw, aby pracowa za Ciebie


Jak stworzy wasne okno dialogowe w edytorze VBA?
Jak otwiera i modyfikowa pliki XML w Excelu?
Jak przypisywa makra do paska szybkiego dostpu?
Excel najpopularniejszy elektroniczny arkusz kalkulacyjny udostpnia narzdzie
do zautomatyzowania czynnoci wykonywanych w tym programie. Jest to jzyk
programowania nazywany Visual Basic for Applications (VBA). Pozwala on na tworzenie
makr, czyli zapisu pewnej sekwencji polece, ktre mog zosta automatycznie
wykonane jako cao. Zapisanie makr w rejestratorze i przygotowanie w ten sposb
konkretnego dokumentu, na przykad raportu miesicznego, sprawia, e kady nastpny
tego rodzaju dokument Excel wykonuje samodzielnie. Dziki VBA mona take
modyfikowa makra oraz tworzy bloki polece, przygotowywa wasne aplikacje
i dodatki do programu gwnego.
Ksika Programowanie w Excelu 2007 PL. Niebieski podrcznik to przewodnik, ktry
w prosty i przejrzysty sposb zapozna Ci z systemem makr Excela. Dokadnie opisano
tu ponad 140 technik programowania, ktre dodatkowo zostay bogato zilustrowane
za pomoc uatwiajcych zrozumienie materiau zrzutw ekranowych. Dziki temu
dowiesz si, na czym polega deklarowanie tablic wielowymiarowych i cyfrowe
podpisywanie makr. Nauczysz si, jak modyfikowa wstk polece, tworzy makra,
zmienne obiektowe i wasne dodatki. Bdziesz umia tak zautomatyzowa czynnoci
programu przy tworzeniu dokumentw, aby to Excel pracowa za Ciebie.
Visual Basic for Applications
Makra i formanty
Model obiektw Excela
Deklarowanie tablic
Instrukcje sterujce
Funkcje arkuszy
Debugowanie kodu
Skoroszyty i pliki
Arkusze i wykresy
Praca z zakresami komrek
Zdarzenia
Pliki XML
Patrz i ucz si, jak wykorzysta moliwoci programu, aby pracowa szybko i bez wysiku!

Spis treci
Jak uywa tej ksiki.........................................................xii
Rozdzia 1. Makra i formanty................................................ 2
Programowanie w Excelu wprowadzenie...................................................................................... 2
Makra wprowadzenie.......................................................................................................................... 4
Zabezpieczenia przed uruchamianiem makr.................................................................................... 6
Tworzenie podpisu cyfrowego............................................................................................................... 7
Rejestrowanie makr................................................................................................................................... 8
Przypisywanie podpisu cyfrowego.....................................................................................................10
Uruchamianie makr.................................................................................................................................12
Skrty klawiaturowe................................................................................................................................14
Makra napasku narzdzi Szybki dostp.......................................................................................... 16
Usuwanie makr......................................................................................................................................... 18
Korzystanie zformantw......................................................................................................................20
Definiowanie parametrw formantu..................................................................................................22
Powizanie formantu zmakrem..........................................................................................................24

Rozdzia 2. Edytor Visual Basic............................................ 26


Edytor Visual Basic wprowadzenie..............................................................................................26
Wywietlanie edytora VBA..................................................................................................................28
Wywietlanie okienek edytora.............................................................................................................30
Waciwoci projektu..............................................................................................................................32
Opcje wywietlania kodu......................................................................................................................34
Nowy modu..............................................................................................................................................36
Usuwanie moduu....................................................................................................................................38
Ukrywanie makr.......................................................................................................................................40
Modyfikowanie makr..............................................................................................................................42

Rozdzia 3. Visual Basic for Applications................................ 44


Procedury...................................................................................................................................................44
Funkcje........................................................................................................................................................46
Komentarze................................................................................................................................................48
Zmienne itypy danych...........................................................................................................................50
Odwoania dokomrek izakresw komrek...................................................................................52
Deklarowanie zmiennych......................................................................................................................54
Praca zliczbami........................................................................................................................................56
iv

Praca zcigami znakowymi..................................................................................................................58


Stae..............................................................................................................................................................60

Rozdzia 4. Model obiektw Excela....................................... 62


Model obiektw Excela wprowadzenie.......................................................................................62
Korzystanie zopisu modelu obiektw..............................................................................................64
Zmienne obiektowe..................................................................................................................................66
Waciwoci obiektu................................................................................................................................68
Porwnywanie zmiennych obiektowych...........................................................................................70
Metody obiektu.........................................................................................................................................72
Wywietlanie standardowych okien dialogowych.........................................................................74

Rozdzia 5. Tablice............................................................. 76
Deklarowanie tablic.................................................................................................................................76
Deklarowanie tablic wielowymiarowych..........................................................................................78
Inicjowanie tablic.....................................................................................................................................80
Zmiana rozmiaru tablicy........................................................................................................................82
Typy danych uytkownika.....................................................................................................................84

Rozdzia 6. Instrukcje sterujce........................................... 86


Operatory porwnania............................................................................................................................86
Operatory logiczne..................................................................................................................................87
Ptla DoWhile..........................................................................................................................................88
Ptla DoUntil...........................................................................................................................................90
Ptla For Next...........................................................................................................................................92
Ptla For Each In......................................................................................................................................94
Instrukcja If Then Else...........................................................................................................................96
Instrukcja Select Case............................................................................................................................98
Instrukcja skoku GoTo......................................................................................................................... 100
Wywoywanie procedur...................................................................................................................... 102

Rozdzia 7. Funkcje arkuszy.............................................. 104


Korzystanie z funkcji arkuszy.......................................................................................................... 104
Operatory logiczne............................................................................................................................... 105
Funkcja MsgBox................................................................................................................................... 106
Funkcja InputBox................................................................................................................................. 108

Spis treci
Bieca data igodzina..........................................................................................................................110
Operacje nawartociach daty igodziny.........................................................................................112
Formatowanie dat igodzin..................................................................................................................114
Formatowanie liczb...............................................................................................................................116
Zmiana wielkoci liter..........................................................................................................................118
Wyodrbnianie czci cigu znakowego........................................................................................ 120

Rozdzia 8. Debugowanie kodu........................................... 122


Punkty przerwania................................................................................................................................ 122
Korzystanie zokna Watches.............................................................................................................. 124
Krokowe wykonywanie procedury.................................................................................................. 126
Okno wykonania bezporedniego Immediate......................................................................... 128
Kontynuowanie pracy powystpieniu bdu................................................................................130
Bdy czasu wykonania........................................................................................................................132

Rozdzia 9. Skoroszyty i pliki............................................. 134


Otwieranie skoroszytu..........................................................................................................................134
Otwieranie pliku tekstowego..............................................................................................................136
Otwieranie pliku wybranego przez uytkownika.........................................................................138
Zapisywanie skoroszytu...................................................................................................................... 140
Zapisywanie skoroszytu wformacie wybranym przez uytkownika................................... 142
Sprawdzanie, czy skoroszyt jest otwarty....................................................................................... 144
Zamykanie skoroszytu......................................................................................................................... 146
Nowy skoroszyt...................................................................................................................................... 148
Usuwanie pliku...................................................................................................................................... 150

Rozdzia 10. Arkusze........................................................152


Nowy arkusz........................................................................................................................................... 152
Usuwanie arkusza................................................................................................................................. 154
Przenoszenie arkusza........................................................................................................................... 156
Kopiowanie arkusza............................................................................................................................. 158
Ukrywanie arkusza................................................................................................................................160
Zmiana nazwy arkusza.........................................................................................................................162
Zapisywanie arkusza winnymi pliku..............................................................................................164
Zabezpieczanie arkusza danych........................................................................................................166
Zabezpieczanie arkusza wykresu......................................................................................................168
Drukowanie arkusza............................................................................................................................. 170
Sortowanie arkuszy wedug nazw.................................................................................................... 172
vi

Rozdzia. 11. Praca z zakresami komrek............................ 174


Waciwo Range................................................................................................................................ 174
Waciwo Cells.................................................................................................................................. 176
czenie zakresw................................................................................................................................ 178
Waciwo Offset.................................................................................................................................180
Usuwanie zakresw...............................................................................................................................182
Ukrywanie zakresw.............................................................................................................................184
Nadawanie nazwy zakresu..................................................................................................................186
Zmiana obszaru zakresu.......................................................................................................................188
Wstawianie zakresu...............................................................................................................................190
Ustawianie szerokoci kolumn zakresu...........................................................................................192
Ustawianie wysokoci wierszy zakresu..........................................................................................194
Dzielenie kolumny tekstowej..............................................................................................................196
Cz wsplna zakresw......................................................................................................................198

Rozdzia 12. Praca z komrkami....................................... 200


Wycinanie i wklejanie zakresw...................................................................................................... 200
Kopiowanie iwklejanie zakresw.................................................................................................... 202
Opcje wklejania specjalnego............................................................................................................. 204
Komentarze............................................................................................................................................. 206
Wypenianie zakresu komrek wartociami................................................................................. 208
Kopiowanie zakresu dowielu arkuszy........................................................................................... 210
Obramowanie komrek........................................................................................................................ 212
Przeszukiwanie danych....................................................................................................................... 214
Wyszukiwanie izamiana.....................................................................................................................216

Rozdzia 13. Okna dialogowe i Wstka.............................. 218


Formularze wprowadzenie.............................................................................................................218
Okna dialogowe uytkownika............................................................................................................ 220
Wywoania okien dialogowych......................................................................................................... 222
Zapisywanie wartoci zokna dialogowego.................................................................................... 224
Sprawdzanie wprowadzanych danych............................................................................................ 228
Tworzenie elementw sterujcych................................................................................................... 230
Szablony okien dialogowych.............................................................................................................. 232
Plik customUI.xml............................................................................................................................... 234
Modyfikowanie Wstki..................................................................................................................... 236
Specjalne elementy Wstki.............................................................................................................. 238

vii

Spis treci
Rozdzia 14. Wykresy...................................................... 242
Nowy arkusz wykresu......................................................................................................................... 242
Osadzanie wykresu warkuszu danych.......................................................................................... 244
Kreator wykresw, czyli metoda ChartWizard............................................................................ 246
Doczanie nowej serii danych......................................................................................................... 248
Formatowanie elementw tekstowych............................................................................................ 250
Wykresy zoone................................................................................................................................... 252
Doczanie tabeli danych.................................................................................................................... 254
Formatowanie osi wykresu................................................................................................................ 256

Rozdzia 15. Zdarzenia..................................................... 258


Przegld zdarze................................................................................................................................... 258
Uruchamianie procedury przy otwieraniu skoroszytu............................................................. 262
Uruchamianie procedury przed zamkniciem skoroszytu...................................................... 264
Uruchamianie procedury przed zapisaniem skoroszytu.......................................................... 266
Uruchamianie procedury przy tworzeniu skoroszytu............................................................... 268
Uruchamianie procedury ookrelonej godzinie.......................................................................... 272
Uruchamianie procedury wciniciem kombinacji klawiszy.................................................. 274

Rozdzia 16. Dodatki do aplikacji (add-in)............................ 276


Tworzenie dodatku............................................................................................................................... 276
Waciwoci dodatkw........................................................................................................................ 278
Instalowanie dodatkw........................................................................................................................ 280
adowanie dodatkw wkodzie VBA............................................................................................. 282

Rozdzia 17. Pliki XML..................................................... 284


Pliki XML wprowadzenie............................................................................................................. 284
Pliki Office jako pliki XML............................................................................................................... 286
Pliki XML jako tabele wExcelu...................................................................................................... 290
Przygotowywanie mapy XML.......................................................................................................... 292
Importowanie ieksportowanie plikw XML............................................................................... 294
adowanie plikw XML przy uyciu VBA................................................................................. 296
Importowanie plikw XML przy uyciu VBA........................................................................... 298

viii

Dodatek A: Elementy kodu VBA........................................ 300


Model obiektw VBA i Excela......................................................................................................... 300

Dodatek B: Elementy Wstki ........................................... 320


Elementy nadrzdne Wstki .......................................................................................................... 320

Skorowidz...................................................................... 330

ix

Operatory porwnania

yraenia porwnujemy przy pomocy operatorw porwnania. Wynikiem takiej operacji jest
zawsze jedna z dwch wartoci: True (prawda) lub False (fasz). Najprostsze wyraenie tego rodzaju toA= B, prowadzce doporwnania wartoci zmiennych AiB. Wynikiem obliczenia jego wartoci jest True,
jeeli warto zapisana wzmiennej Ajest taka sama jak
warto zapisana wzmiennej B.
Operator porwnania zawsze umieszcza si midzy
dwoma wyraeniami. Poza znakiem rwnoci dodyspozycji s znaki: nierwnoci (<>), wikszoci (>), mniejszoci (<), wiksze lub rwne (>=) imniejsze lub rwne (<=).

Wskazwka
Wtabeli przedstawiamy zestawienie operatorw
porwnania.

Operator

Funkcja

jest rwne
jest rne od
jest wiksze ni
jest mniejsze ni
jest mniejsze lub rwne
jest wiksze lub rwne

<>
>
<
<=
>=

Operacje porwnania
1 Operator porwnania wptli DoWhile.

Wtym przykadzie, dopki J jest mniejsze od11,


program wykonuje kod wewntrz ptli.
Uwaga: Optlach DoWhile piszemy wpodrozdziale
Ptla DoWhile.

2 Operator porwnania winstrukcji


If Then ElseIf.

Uwaga: Oinstrukcjach If piszemy


wpodrozdziale Instrukcja If Then Else.

2
2

86

Doczenia wyrae porwnania uywa si operatorw logicznych: Or, And, Xor, Eqv, Imp iNot.

Logiczna operacja Or
Logiczny operator Or zwraca warto True, gdy conajmniej
jedno zdwch wyrae zwraca True.

Przykad:
Sub LogiczneOr()

Wyraenie A

Wyraenie B

Wynik

Dim Wynik As Boolean

prawda
prawda
fasz
fasz

prawda
fasz
prawda
fasz

prawda
prawda
prawda
fasz

Wynik = 10 < 20 Or 30 < 20 'Zwraca True


MsgBox (Wynik)
End Sub

Logiczna operacja And

Logiczna operacja Xor

Logiczny operator And zwraca warto True, jeli oba wyraenia zwracaj True.

Logiczny operator Xor zwraca warto True, gdy jedno itylko jedno zdwch wyrae jest prawdziwe.

Wyraenie A

Wyraenie B

Wynik

Wyraenie A

Wyraenie B

Wynik

prawda
prawda
fasz
fasz

prawda
fasz
prawda
fasz

prawda
fasz
fasz
fasz

prawda
prawda
fasz
fasz

prawda
fasz
prawda
fasz

fasz
prawda
prawda
fasz

Logiczna operacja Eqv

Logiczna operacja Imp

Logiczny operator Eqv zwraca warto True tylko wtedy, gdy


oba wyraenia sprawdziwe lub gdy oba sfaszywe.

Logiczny operator Imp zwraca warto True, oile nie zachodzi sytuacja, epierwsze wyraenie jest prawdziwe, adrugie
faszywe.

Wyraenie A

Wyraenie B

Wynik

prawda
prawda
fasz
fasz

prawda
fasz
prawda
fasz

prawda
fasz
fasz
prawda

Rozdzia 6. Instrukcje sterujce

Operatory logiczne

Wyraenie A

Wyraenie B

Wynik

prawda
prawda
fasz
fasz

prawda
fasz
prawda
fasz

prawda
fasz
prawda
prawda

Logiczna operacja Not


Logiczny operator Not neguje warto wyraenia, zmieniajc warto True naFalse iFalse naTrue.

Przykad:
LogiczneNot()
Dim Wynik As Boolean
Wynik = Not (10 = 10) 'Zwraca False
MsgBox (Wynik)
End Sub

87

Ptla DoWhile

tla DoWhile (wykonuj, gdy) pozwala powtarza


wykonywanie bloku instrukcji, dopki dane wyraenie jest prawdziwe. Jej skadnia to:

Do[While warunek]
[instrukcje]
Loop

Warunek to wyraenie, ktre zwraca True lub False.


Gdy program napotyka na ptl Do While, najpierw
sprawdza warto warunku ptli. Jeeli jest on speniony (zwraca True), s wykonywane instrukcje wewntrz
ptli. Sprawdzanie warunku i wykonywanie instrukcji
spowtarzane domomentu, gdy warunek zwrci warto
False. Spowoduje toprzejcie dowykonywania instrukcji nastpujcej pozamykajcym ptl sowie Loop.

W ptli Do While mona wyrni cztery gwne elementy: instrukcj Do inicjujc ptl, instrukcj While,
ktra bada warunek ptli, blok instrukcji wykonywanych,
gdy warunek jest speniony, oraz kocow instrukcj
Loop.
Mona te stosowa skadni ptli DoLoop While:
Do
[instrukcje]
Loop [While warunek]

Jej dziaanie jest podobne, ale warunek sprawdzany jest


zawsze po wykonaniu bloku instrukcji, co powoduje,
ewykonanie nastpuje conajmniej raz.

Ptla DoWhile
1 Utwrz now procedur.
2 Zadeklaruj zmienn.
3 Zainicjuj zmienn.

Wprzedstawionym przykadzie zmiennej J


przypisana jest warto 1, aby dalej uy jej
jako licznika ptli.
3

4 Wpierwszym wierszu ptli nastpi sprawdzenie


stanu licznika.

Wprzedstawionym przykadzie sprawdzana


jest warto zmiennej J ipowtarzany jest blok
instrukcji, dopki jest ona mniejsza ni 11.
5 Zapisz warto J wkomrce arkusza.

Wprzedstawionym przykadzie numer wiersza


jest rwny wartoci J, anumer kolumny to1.

88

4
5

Tutaj dodawane jest 1 dobiecej wartoci J.


7 Zakocz ptl instrukcj Loop.

Program powrci doinstrukcji DoWhile


ibdzie kontynuowa powtarzanie ptli
doczasu, gdy warunek nie bdzie speniony.
8 Wcinij kombinacj klawiszy Alt+F11, aby
powrci doExcela iuruchomi kod.

Uwaga: Ouruchamianiu procedur piszemy


wrozdziale 1.

6
7

Rozdzia 6. Instrukcje sterujce

6 Zwiksz warto J.

Procedura umieci wkomrkach arkusza


wartoci od1 do10.

Wskazwka
Ptla musi zawiera instrukcj, ktrej wykonanie prowadzi dozmiany wyniku obliczania warunku ptli. Jeeli nie
zwrci on wpewnym momencie wartoci False, utworzy si ptla nieskoczona (ang. infinite loop).
Aby unikn takiej sytuacji, dobrze jest stosowa jasno okrelon zmienn licznika. Wprzedstawionym poniej
przykadzie jest to zmienna J o pocztkowej wartoci 1. Kade kolejne wykonanie ptli zaley od tego, czy
stan licznika jest mniejszy od5. Gwna instrukcja wykonywanego bloku przeprowadza operacj zapisywania
danych doarkusza. Wostatniej licznik jest zwikszany. Bezporednio potym nastpuje ponowne sprawdzenie
warunku. Wefekcie ptla zostaje powtrzona cztery razy, zapitym razem warto J wynosi 5 iwarunek ptli
nie zostaje speniony.

Przykad:
Dim J As Integer
J = 1
DoWhile J < 5
ActiveSheet.Rows(J).Cells(1).Value = J
J = J + 1
Loop

89

Ptla DoUntil

tla Do Until (wykonuj do czasu, gdy) jest wykonywana doczasu spenienia wskazanego warunku. Mona j na przykad wykorzysta do modyfikowania kolejnych komrek a donapotkania komrki
pustej.
Dziaanie ptli nie rni si zasadniczo od ptli Do
While. Rnica polega na tym, e o ile Do While
jest wykonywana, gdy warunek wejcia jest speniony,
powtarzanie ptli Do Until trwa tak dugo, jak dugo
warto warunku wynosi False.
Wyrniamy cztery elementy ptli: instrukcj inicjujc
ptl Do, warunek Until, naktrego spenienie oczekujemy, blok powtarzanych instrukcji ikoczc instrukcj
Loop.

Jeeli warunek Until zostanie umieszczony w wierszu


bdzie sprawdzany przed kadym wykonaniem bloku. Oznacza to, ejeeli jego obliczenie odrazu doprowadzi do wartoci False, ptla nie zostanie wykonana
ani razu.
Mona rwnie umieci warunek nakocu ptli; wwczas wykonanie bloku instrukcji bdzie poprzedzone jego
sprawdzeniem. Zapewni toconajmniej jednorazowe wykonanie ptli. Kolejne powtrzenia nastpi tylko wtedy,
gdy wyraenie warunku zwrci False.
Do,

Ptla DoUntil
1 Utwrz now procedur.
2 Zadeklaruj zmienn.
3 Zainicjuj zmienn.
Wprzedstawionym przykadzie zmiennej
J przypisywana jest warto 2, aby dalej
przechowywa wniej numer wiersza.

1
2
3

4 Wpierwszym wierszu ptli nastpi


sprawdzenie warunku.

Wtym przykadzie sprawdzana jest


zawarto wskazywanych wartoci
zmiennej J komrek arkusza; blok instrukcji
powtarzany jest domomentu natrafienia
nakomrk pust.

90

Wprzedstawionym przykadzie zawarto


komrki wkolumnie Amnoona jest przez
0,07; wynik umieszczany jest wkolumnie B.
6 Zamknij ptl sowem kluczowym Loop.

Program powrci dopocztku ptli ibdzie


powtarza blok instrukcji, dopki warunek
wejcia nie zostanie speniony.
7 Wcinij kombinacj klawiszy Alt+F11, aby
powrci doExcela iuruchomi kod.

Uwaga: Ouruchamianiu procedur piszemy


wrozdziale 1.

5
6

Rozdzia 6. Instrukcje sterujce

5 Wprowad blok instrukcji.

Procedura umieci wkolumnie B


wartoci reprezentujce 7 procent
wartoci wkolumnie A.

Wskazwka
Podczas pracy z ptlami niejednokrotnie pojawiaj si sytuacje, gdy wygodniejsze jest natychmiastowe prze
rwanie wykonywania ptli iprzejcie dodalszych instrukcji, niezalenie odstanu warunku While czy Until.
Umoliwia to instrukcja Exit Do. Mona j umieci w dowolnym miejscu bloku instrukcji w ptli. Mona
stosowa wiele takich instrukcji. Efektem Exit Dojest zawsze przejcie dowykonywania pierwszej instrukcji
nastpujcej poLoop.
Exit Do towarzyszy najczciej instrukcja warunkowa, taka jak If Then. Sprawdza ona pewien specjalny
warunek iwprzypadku jego spenienia inicjuje natychmiastowe wyjcie zptli.

Przykad:
DoWhile Wyraenie1 = True
If Wyraenie2 = True
Exit Do
End If
Loop

91

Ptla For Next

tla For Next (dla wartoci ) suy dopowtarzania bloku instrukcji cile okrelon ilo razy.
Mona jej uy naprzykad dowypenienia pewnej liczby komrek arkusza.
Ptla For Next zawsze korzysta ze zmiennej licznika.
Instrukcje umieszczone pomidzy wierszami For iNext
spowtarzane doczasu osignicia przez zmienn licznika wartoci maksymalnej. Gdy warto licznika zwiksza
si, wykonywana jest instrukcja nastpujca poNext.
Ptla For Next skada si z trzech czci. Pierwsz
jest wiersz For, wktrym okrelane sparametry ptli:
zmienna licznika oraz jej wartoci pocztkowa imaksy-

malna, naprzykad X = 1 To5. Potem nastpuje cig instrukcji izakoczenie ptli, czyli sowo kluczowe Next.
Wykonywanie ptli rozpoczyna si odsprawdzenia, czy
warto licznika nie przekracza zdefiniowanego maksimum. Licznik to warto liczbowa standardowo zwikszana o 1. Ptla jest wykonywana tak dugo, jak dugo
warto licznika jest mniejsza odwartoci maksymalnej
lub jej rwna. Ptla nie zostanie wykonana ani razu tylko wtedy, gdy warto pocztkowa licznika jest wiksza
odmaksymalnej.

Ptla For Next


1 Utwrz now procedur.
2 Zadeklaruj zmienn.
3 Zainicjuj zmienn.
Wprzedstawionym przykadzie licznikiem
jest zmienna Licznik.

1
2
3

4 Wpierwszym wierszu ptli pokazane


sparametry decydujce ojej pracy.

Zmienna licznika.
Warto pocztkowa.
Warto maksymalna.

5 Wprowad blok instrukcji.

Wprzedstawionym przykadzie
wczterech kolejnych komrkach zapisane
scigi odRegion 1 doRegion 4.

92

4
5

Program powrci dopocztku ptli


ibdzie powtarza blok instrukcji,
dopki warunek przekroczenia wartoci
maksymalnej nie zostanie speniony.
7 Wcinij kombinacj klawiszy Alt+F11, aby
powrci doExcela iuruchomi kod.

Uwaga: Ouruchamianiu procedur piszemy


wrozdziale 1.
6

Rozdzia 6. Instrukcje sterujce

6 Zamknij ptl sowem kluczowym Next.

Procedura umieci wkolejnych


komrkach teksty odRegion 1
doRegion 4.

Wskazwka
Warto zmiennej licznika mona zmienia odowoln warto. Standardowo wynosi ona 1. Aby poda inn,
naley skorzysta zesowa kluczowego Step dodawanego wpierwszym wierszu ptli. Warto zwikszajca
licznik moe by ujemna osignie si wtedy efekt zmniejszania licznika. Wponiszym przykadzie licznik zaini
cjowany jest wartoci 2 izwikszany o2 do20. Kolejne wartoci zmiennej licznika J ssumowane wzmiennej
SumaWartoci. Ptla zostanie wykonana dziesi razy. Gdy warto licznika osignie 20, blok instrukcji prze
stanie by powtarzany.

Przykad:
For J = 2 To20 Step 2
SumaWartoci = SumaWartoci + J
Next

93

Ptla For Each In

tla For Each In (dla kadego) pozwala wykona blok instrukcji dla kadego elementu tablicy lub
kadego obiektu kolekcji. Nie matuzmiennej licznika ani sprawdzanego warunku. Oliczbie powtrze decyduje liczno zbioru elementw tablicy lub kolekcji.
Zakoczenie nastpuje po zakoczeniu przetwarzania
ostatniego elementu. Oto skadnia ptli:
For Each element In grupa
[instrukcje]
Next [element]

Wyrnia si trzy czci ptli: pierwszy wiersz For Each


element In grupa inicjuje ptl; element tozmienna uywana doprzechowywania pojedynczego elementu
wtrakcie wykonywania bloku instrukcji; grupa tonazwa
tablicy lub kolekcji. Dalej nastpuje cig powtarzanych
instrukcji ikoczca ptl instrukcja Next.
Jeli ptla przetwarza kolejne elementy tablicy, zmienna
uywana do przechowywania pojedynczych elementw
musi by typu Variant. Wprzypadku kolekcji dowyboru stypy: Variant, oglny Object lub dowolny obiektowy.

Ptla For Each In


1 Utwrz now procedur.
2 Zadeklaruj tablic.
1

Uwaga: Otablicach pisalimy wrozdziale 5.


3 Zadeklaruj zmienne.

4 Przypisz wartoci elementom tablicy.

Wtym przypadku bd towartoci


komrki aktywnej itrzech kolejnych
komrek.

94

Rozdzia 6. Instrukcje sterujce

5 Wprowad instrukcj For Each In.

Zmienna przechowujca pojedynczy


element.

Powtarzane instrukcje.

Nazwa tablicy lub kolekcji.

6 Zamknij ptl sowem kluczowym Next.

Wtym przypadku sumowane selementy


tablicy.

7 Wprowad instrukcje dowykonania powyjciu


zptli.

6
7

8 Wcinij kombinacj klawiszy Alt+F11, aby


powrci doExcela iuruchomi kod.

Uwaga: Ouruchamianiu procedur piszemy


wrozdziale 1.

Wprzedstawionym przykadzie sumowane


selementy tablicy; wynik umieszczany
jest wkolejnej komrce arkusza.

Wskazwka
Ptle mona zagnieda. Pozwala tomidzy innymi atwo wypenia liczbami tablice wielowymiarowe. Oza
gniedaniu mwi si wtedy, gdy umieszcza si kolejn ptl wbloku powtarzanych instrukcji innej ptli. Przy
operacjach na tablicach wielowymiarowych naley utworzy tyle kolejnych ptli, ile wymiarw ma tablica.
Wponiszym przykadzie wykorzystane sdwie ptle For Next. Zwr uwag, ewkadym przebiegu ptli
sterowanej zmienn K (ptli zewntrznej) wykonywany jest peny cykl powtrze ptli sterowanej zmienn L
(ptli wewntrznej). Wkadym przypadku zagniedania ptli wyjcie zptli wewntrznej przed przejciem
dokolejnego powtrzenia ptli zewntrznej jest bezwzgldnie wymagane.

Kod dowprowadzenia:
Sub WypenijTablic()
Dim NowaTablica(1 To3, 1 To3)
As Integer

Wynik

Przedstawiony kod utworzy dwuwymiarow tablic onastpujcych wartociach:

Dim K As Integer
Dim L As Integer

X = 1

For K = 1 To3

For L = 1 To3
NowaTablica(K, L) = X
X = X + 1
Next L
Next K
End Sub

95

Instrukcja If Then Else

nstrukcja If Then Else (jeeli to wprzeciwnym razie) pozwala okreli grup instrukcji jako
wykonywane warunkowo. Wtym podrozdziale przedstawiony jest przykad obliczania premii dla sprzedawcw, ktrzy osignli wynik powyej 50 000 z. Gdy
warunek przekroczenia tego progu nie jest speniony, drukowany jest tekst bez premii. Sprawdzanie warunku
umoliwi instrukcja If Then Else. Maona skadni:

wadzi dowyniku True lub False (prawda lub fasz).


Jeeli wyraenie jest prawdziwe, wykonywany jest cig
instrukcji midzy Then a Else. Jeeli jest faszywe, wykonywany jest blok midzy Else aEnd If. Nieokrelona
warto wyraenia jest interpretowana jako False.
Jeeli pojawia si potrzeba badania wielu warunkw, mona skorzysta z odmiany instrukcji warunkowej ze sowem ElseIf. Prostym przykadem moe by obliczanie
wartoci podatku VAT, 7-procentowego dla produktu A,
22-procentowego dla produktu B i zerowego dla pozostaych. Wiersz ElseIf warunek Then pozwala wprowadza kolejne bloki instrukcji przed ostatnim wierszem
(iblokiem) Else. Wiersz iblok instrukcji Else sopcjonalne imona jewkadej wersji instrukcji pomin.

If warunek Then
[instrukcje]
Else
[instrukcje]
End If

Kluczowym elementem instrukcji jest warunek dowolne wyraenie, ktrego warto toTrue lub False. Wpodanym przykadzie jest to wyraenie badajce warto
zmiennej Sprzeda. Obliczenie Sprzeda > 50000 pro-

Instrukcja If Then Else

Wersja If Then Else


1 Wprowad instrukcj If Then.

Warunek.
Instrukcja dowykonania.

2 Wprowad blok Else.

Instrukcja dowykonania.

3 Wprowad wiersz End If.

4 Wcinij kombinacj klawiszy Alt+F11, aby powrci


doExcela iuruchomi kod.

Uwaga: Ouruchamianiu procedur piszemy wrozdziale 1.

Wprzedstawionym przykadzie, jeeli


warto wkolumnie sprzeday jest wiksza
od50000, program obliczy warto
4-procentowej premii. Wprzeciwnym
wypadku wstawi doarkusza tekst bez
premii.

96

1 Wprowad instrukcj If Then.

Warunek.
Instrukcja dowykonania.

2 Wprowad blok ElseIf.

Instrukcja dowykonania.

3 Wprowad blok Else.

Instrukcja dowykonania.

4 Wprowad wiersz End If.

5 Wcinij kombinacj klawiszy Alt+F11, aby


powrci doExcela iuruchomi kod.

1
2
2
3
4

Rozdzia 6. Instrukcje sterujce

Wersja ElseIf

Uwaga: Ouruchamianiu procedur piszemy


wrozdziale 1.
Wprzedstawionym przykadzie obliczana
jest warto sprzeday brutto podoliczeniu
podatku wedug jednej ztrzech stawek.

Wskazwka
Robienie wci wkodzie programu nie jest obowizkowe, ale znacznie poprawia jego czytelno. Wcicia uwy
datniaj przede wszystkim struktur kodu, ktra staje si dziki nim widoczna, jeszcze zanim zaczniesz czyta
waciw tre. Jest to szczeglnie wane, gdy korzystasz z instrukcji wykonania warunkowego i ptli, gdzie
przetwarzanie nie przebiega sekwencyjnie. Poniej przedstawiony zosta przykad wcicia treci ptli For Next,
uatwiajcy odnalezienie jej zakoczenia. Wcita zostaa rwnie instrukcja If Then.

Przykad:
For I= 1 To5
If J < 10 Then
J = J + 1
End If
Next

Jeeli blok instrukcji wykonywanych poThen zawiera tylko jedno polecenie, moesz wprowadzi ca konstruk
cj If wjednym wierszu inie wpisywa End If.

Przykad:
If Suma < 10 Then Suma = Suma + 1
jest rwnowane:
If Suma < 10 Then
Suma = Suma + 1
End If

97

Instrukcja Select Case

nstrukcja Select Case (wybierz przypadek) todalsze rozwinicie instrukcji wykonania warunkowego,
odpowiadajce zastosowaniu wielu blokw ElseIf.
Korzysta si zniej, gdy pojawia si potrzeba dokonania
wyboru pomidzy kilkoma instrukcjami na podstawie
wartoci komrki lub zmiennej. Ponownie wykorzystany
zostanie przykad naliczania jednej z trzech stawek podatku VAT. Oto skadnia instrukcji:
Select Case wyraenie
[Case lista_wyrae n
[instrukcje-n]]
[Case Else
[instrukcje]]
End Select

Wwierszu Select Case podaje si wyraenie, ktrego


warto bdzie badana wkolejnych wierszach Case. Kady wiersz Case zawiera warto, ktra zostanie porw-

nana zewskazanym wyraeniem. Ponim nastpuje blok


instrukcji wykonywanych, gdy wynik porwnania bdzie
pozytywny, naprzykad:
Select Case Warto
Case 4
Instrukcje
...
End Select

Powyszy przykad sprawdza, czy Warto = 4. Instrukcje zostan wykonane tylko wtedy, gdy warunek ten jest
speniony (Warto = 4 zwraca True). Instrukcj koczy wiersz End Select.
Dodatkowo mona uy bloku Case Else, ktry zostanie wykonany tylko wtedy, gdy adne z wczeniejszych
porwna Case nie doprowadzi do uzyskania wyniku
prawda.

Instrukcja Select Case


1 Utwrz now procedur.
2 Zadeklaruj zmienn.

3 Zainicjuj zmienn.
2

4 Utwrz ptl DoWhile.

Uwaga: Optlach DoWhile pisalimy


wpodrozdziale Ptla DoWhile.
5 Wprowad instrukcj Select Case.

Warto, ktra posuy dodalszych

porwna zwartociami wwierszach

Case.

6 Wprowad bloki Case.

5
6
6

Jeeli warto podana wwierszu Select


Case jest rwna wartoci podanej
wwierszu Case, zostan wykonane

instrukcje wdanym bloku.

98

Rozdzia 6. Instrukcje sterujce

7 Wprowad blok Case Else.

Instrukcje wtym bloku zostan wykonane, gdy aden


zesprawdzanych wczeniej warunkw nie zostanie
speniony.
8 Wprowad instrukcj End Select.
9 Wcinij kombinacj klawiszy Alt+F11, aby powrci
doExcela iuruchomi kod.

Uwaga: Ouruchamianiu procedur piszemy wrozdziale 1.

7
8

Wtym przykadzie obliczana jest warto


sprzeday brutto dla towarw ornej stawce
podatku VAT.

Zastosuj to
Winstrukcjach Select Case mona rwnie korzysta zespecjalnych wyrae umoliwiajcych sprawdze
nie, czy warto naley dopewnej grupy.

Kod dowprowadzenia:

Wynik:

Select Case LiczbaOperacji


Case 1 To5
Prowizja = Suma * .05
Case 6 To15
Prowizja = Suma * .1
End Select

Instrukcja Select Case sprawdzi, czy warto


LiczbaOperacji naley do jednego z dwch
zakresw.

Kod dowprowadzenia:

Wynik:

Select Case LiczbaStudentw


Case Is < 10
MsgBox("Zbyt maa liczba
zapisanych studentw.)
End Select

Instrukcja Select Case sprawdzi, czy war


to LiczbaStudentw jest mniejsza od 10.
Jeeli tak, wywietli si ostrzegawcze okienko
dialogowe.

Kod dowprowadzenia:

Wynik:

Select Case Stan


Case "TX", "CA
Suma = Suma * 1.085
End Select

Instrukcja Select Case sprawdzi, czy warto


Stan to TX lub CA. Jeeli tak, suma zostanie
zwikszona opodatek 8,5%.

99

Instrukcja skoku GoTo

nstrukcja GoTo (id do) pozwala natychmiast przej


do innego miejsca w procedurze. Przed jej uyciem
dane miejsce docelowe musi zosta oznaczone etykiet. Etykieta to nazwa i znak dwukropka (:). Instrukcj
wykonywan poinstrukcji GoTo jest zawsze pierwsza instrukcja poetykiecie. Oto skadnia polecenia GoTo:
GoTo etykieta

Jak wida, nie jest skomplikowana iobejmuje sowo kluczowe GoTo oraz etykiet. Etykieta moe zosta umieszczona wdowolnym miejscu wtej samej procedurze. Instrukcja GoTo nie pozwala przej do innej procedury
nawet w tym samym module. Mona uy dowolnej
liczby instrukcji GoTo i dowolnej liczby etykiet, a rne instrukcje mog korzysta ztych samych lub innych
etykiet.

Jedn zpodstawowych zasad dobrego stylu programowania jest korzystanie z instrukcji GoTo wycznie wtedy,
gdy nie mona osign podanego wyniku przy uyciu
instrukcji warunkowych iptli. Jest towzasadzie relikt
zczasw, kiedy kada instrukcja kodu miaa swj numer,
azasb dostpnych instrukcji sterujcych by ograniczony. Cho wjzyku VBA instrukcje GoTo wykorzystuje si
powszechnie do obsugi bdw, warto wiedzie, e dla
wikszoci programistw korzystanie z nich to dowd
braku umiejtnoci pisania poprawnych programw.
Dotematu wykorzystywania instrukcji GoTo wdebugowaniu kodu powrcimy wrozdziale 8.

Instrukcja skoku GoTo


1 Utwrz now procedur.
2 Wprowad kod.
1

3 Wprowad instrukcj GoTo.

3
3

3
3

100

Ponazwie wstaw dwukropek.

5 Wprowad dalszy kod.

6 Wcinij kombinacj klawiszy Alt+F11,


aby powrci doExcela iuruchomi
kod.

Uwaga: Ouruchamianiu procedur piszemy


wrozdziale 1.

4
5
4

Rozdzia 6. Instrukcje sterujce

4 Wstaw etykiet.

Wtym przykadzie obliczany jest koszt


dostawy, oile podoliczeniu podatku
warto zakupu jest mniejsza ni 50 z.

Wskazwka
Etykiety to oznaczenia wybranych miejsc w kodzie.
Same nie maj adnego wpywu naprzebieg progra
mu. Nie swnajmniejszym stopniu podobne doin
strukcji warunkowych lub ptli, ktre operuj pew
nym zamknitym blokiem kodu.
W przypadku stosowania wielu etykiet pojawia si
problem pomijania kodu w kolejnych oznaczonych
nimi blokach. Naley wtedy uy jeszcze jednej in
strukcji GoTo lub instrukcji Exit Sub, ktra przery
wa wykonywanie procedury.

W poniszym przykadzie uyta zostaa instrukcja


Exit Sub bezporednio przed etykiet, aby unikn
wykonania instrukcji T = 50. Ma ona zosta wykona
na wycznie poskoku doetykiety ZwikszWarto.
Sam skok wyrnia nietypow sytuacj, wktrej nie
podana jest operacja T = T * 5.

Przykad:
Sub Test Goto()
Dim T As Integer
T = Cells(1,1)
If T < 5 Then GoTo ZwikszWarto
T = T * 5
Exit Sub
ZwikszWarto:
End Sub

101

Wywoywanie procedur

o wywoywania innych procedur suy instrukcja


Call. Aby jej uy, wprowadza si sowo Call, nazw procedury iujt wnawiasy list parametrw.
Pojej wykonaniu przetwarzana jest pierwsza instrukcja
kodu procedury wywoanej. Pozakoczeniu jej wykonywania program przechodzi dopierwszej instrukcji poinstrukcji Call wprocedurze wywoujcej.
Wywoywanie procedur czsto poprzedza si sprawdzeniem warunku, naprzykad instrukcj If Then. Powoduje to efekt wykonania okrelonych w wywoywanej

procedurze operacji tylko w przypadku, gdy okrelony


winstrukcji If Then warunek jest speniony. Kod wkolejnych wierszach jest wykonywany zawsze. Oczywicie
mona go pomin, wstawiajc polecenie Exit Sub.
Sowo kluczowe Call nie jest wymagane. Mona uy
samej tylko nazwy procedury. Wwczas lista argumentw nie moe by umieszczana wnawiasach. Kod wywoywany wten sposb moe by zapisany wprocedurach
Sub, Function lub bibliotece DLL.

Wywoywanie procedur
1 Utwrz now procedur.
2 Zadeklaruj izainicjuj zmienne.
2

Mog by potrzebne zmienne publiczne.


Uwaga: Ozmiennych publicznych pisalimy
wrozdziale 3.

3 Utwrz warunek If Then.


4 Wywoaj procedur.

4
4
4

102

6 Wprowad kod, ktry bdzie


wykonywany wwywoaniach.
7 Wcinij kombinacj klawiszy
Alt+F11, aby powrci doExcela
iuruchomi kod.

Uwaga: Ouruchamianiu procedur


piszemy wrozdziale 1.

6
5

Rozdzia 6. Instrukcje sterujce

5 Utwrz procedury wywoywane.

Gdy warunek zostanie speniony,


instrukcja If Then wywoa
procedur.

Zastosuj to
Korzystanie zesowa kluczowego Call jest opcjonalne. Jego stosowanie pozwala wyrni wywoania proce
dur zdefiniowanych jako funkcje iprocedury programu (wodrnieniu odfunkcji standardowych idoczonych
wbibliotekach). Gdy Call zostanie pominite, trzeba rwnie opuci nawiasy otaczajce list argumentw:

ta instrukcja:

jest rwnowana z:

Call NowaProcedura(zmienna1, zmienna2)

NowaProcedura zmienna1, zmienna2

103

You might also like