Professional Documents
Culture Documents
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
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 5. Tablice............................................................. 76
Deklarowanie tablic.................................................................................................................................76
Deklarowanie tablic wielowymiarowych..........................................................................................78
Inicjowanie tablic.....................................................................................................................................80
Zmiana rozmiaru tablicy........................................................................................................................82
Typy danych uytkownika.....................................................................................................................84
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
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
viii
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.
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
prawda
prawda
fasz
fasz
prawda
fasz
prawda
fasz
prawda
prawda
prawda
fasz
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
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
Operatory logiczne
Wyraenie A
Wyraenie B
Wynik
prawda
prawda
fasz
fasz
prawda
fasz
prawda
fasz
prawda
fasz
prawda
prawda
Przykad:
LogiczneNot()
Dim Wynik As Boolean
Wynik = Not (10 = 10) 'Zwraca False
MsgBox (Wynik)
End Sub
87
Ptla DoWhile
Do[While warunek]
[instrukcje]
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]
Ptla DoWhile
1 Utwrz now procedur.
2 Zadeklaruj zmienn.
3 Zainicjuj zmienn.
88
4
5
6
7
6 Zwiksz warto J.
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.
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
90
5
6
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
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.
1
2
3
Zmienna licznika.
Warto pocztkowa.
Warto maksymalna.
Wprzedstawionym przykadzie
wczterech kolejnych komrkach zapisane
scigi odRegion 1 doRegion 4.
92
4
5
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
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]
94
Powtarzane instrukcje.
6
7
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
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
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:
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-
Warunek.
Instrukcja dowykonania.
Instrukcja dowykonania.
96
Warunek.
Instrukcja dowykonania.
Instrukcja dowykonania.
Instrukcja dowykonania.
1
2
2
3
4
Wersja ElseIf
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
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
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.
3 Zainicjuj zmienn.
2
Case.
5
6
6
98
7
8
Zastosuj to
Winstrukcjach Select Case mona rwnie korzysta zespecjalnych wyrae umoliwiajcych sprawdze
nie, czy warto naley dopewnej grupy.
Kod dowprowadzenia:
Wynik:
Kod dowprowadzenia:
Wynik:
Kod dowprowadzenia:
Wynik:
99
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.
3
3
3
3
100
4
5
4
4 Wstaw etykiet.
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.
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
Wywoywanie procedur
1 Utwrz now procedur.
2 Zadeklaruj izainicjuj zmienne.
2
4
4
4
102
6
5
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:
103