You are on page 1of 19

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE

VBA dla Excela 2002/2003.


Leksykon kieszonkowy
Autor: Mirosaw Lewandowski
ISBN: 83-7361-377-3
Format: B6, stron: 144

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

Ta niewielka rozmiarami ksika jest niezwykle cenn pomoc dla osb, ktre chc
bez wgbiania si w niuanse Visual Basic for Applications tworzy ad hoc skrypty
w tym jzyku, rozszerzajc moliwoci programu Microsoft Excel.
W zwizej i skondensowanej formie znajdziesz tu wybrane, najwaniejsze informacje
o programowaniu w VBA i dziesitki drobnych wskazwek, ktre pomog Ci osign
cele, ktre sobie postawie. Nie zawsze trzeba siga po podrcznik wyjaniajcy
wszystko od podstaw. Jeeli nie czujesz takiej potrzeby, wystarczy Ci ksika, ktr
wanie trzymasz w rku.
Omwiono midzy innymi
Stae, zmienne i tablice w VBA
Obiekty i metody; w tym wybrane obiekty MS Office
Funkcje Visual Basica
Interakcj programw z uytkownikiem
Instrukcje Visual Basica
Obsug bdw w VBA
Procedury zdarzeniowe dla obiektw Excela
Formularze i zwizane z nimi procedury

Spis treci
Wstp .........................................................................................5
Rozdzia 1. Stae, zmienne i tablice ....................................6
Deklarowanie zmiennych i staych .........................................................6
Deklarowanie procedur i tablic ...............................................................8
Typy zmiennych.......................................................................................10
Opcje moduu ...........................................................................................13
Konwersja typw danych .......................................................................15

Rozdzia 2. Obiekty i metody.............................................21


Metody.......................................................................................................22
Przegldarka obiektw............................................................................53
Obiekty ......................................................................................................56

Rozdzia 3. Elementy Visual Basica ...................................77


Funkcje i operatory matematyczne .......................................................77
Data i czas .................................................................................................82
Interakcja z uytkownikiem ...................................................................90
Operacje na acuchach...........................................................................93
Ptle i skoki .............................................................................................100
Instrukcje warunkowe i wyboru..........................................................103
Przerwanie programu ...........................................................................107
Funkcje informacyjne ............................................................................108
Bdy ........................................................................................................112

Rozdzia 4. Procedury zdarzeniowe ................................115


Procedury zdarzeniowe dla obiektu Worksheet ...............................115
Procedury zdarzeniowe dla obiektu ThisWorkbook........................117
Zdarzenia dla innych obiektw ...........................................................123

Rozdzia 5. Formularze ......................................................124


Procedury zdarzeniowe formantw ...................................................124

Skorowidz .............................................................................137

Spis treci

Rozdzia 3. Elementy Visual Basica


Funkcje i operatory matematyczne
Funkcje trygonometryczne
Do wyboru mamy funkcje:
 Arcus tangens,
 Cosinus,
 Sinus,

 Tangens.
Skadnia wszystkich jest taka sama:


Aby otrzyma warto funkcji cotangens, naley zastosowa funkcj 1/Tan.


Warto Pi moesz obliczy na dwa sposoby:
w VBA jako ArcusTangens:

  

lub korzystajc z funkcji arkuszowej


:
  

Exp i Log
Log zwraca warto logarytmu naturalnego danej liczby. Podstaw logarytmw naturalnych jest staa e=2,71828182845904.
jest odwrotnoci funkcji  zwraca warto liczby e podniesion do wskazanej potgi.

Rozdzia 3. Elementy Visual Basica

77

Skadnia:




 wykadnik potgi,
 

  liczba rzeczywista dodatnia, ktrej logarytm naley


obliczy.

Sqr
Zwraca pierwiastek kwadratowy podanego argumentu.
Skadnia:
 

  liczba rzeczywista wiksza od 0.

Randomize, i Rnd

 suy do zainicjowania generatora liczb losowych.

Skadnia:



 argument opcjonalny warto pocztkowa do obliczenia zbioru liczb pseudolosowych. Jeeli go pominiesz,
zostanie on ustalony na podstawie wskaza zegara systemowego, co dodatkowo korzystnie wpynie na losowane
liczby.
 generuje liczb losow z zakresu od 0 do <1.

Skadnia:
 

78

VBA dla Excela 2002/2003. Leksykon kieszonkowy

  argument opcjonalny;


jeeli   = 0, funkcja zwrci ostatnio wygenerowan
liczb;
jeeli   <0, funkcja za kadym razem zwrci t sam,
raz wygenerowan warto;
jeeli pominiesz argument lub   >0, funkcja zwrci
kolejn liczb ze zbioru liczb losowych.
Warto argumentw  i   nie ma znaczenia, jeeli zaley
Ci na losowym generowaniu liczb. Jednake za ich pomoc moesz wpyn na powtrzenie generowania tego samego zestawu.
Jeli wic chcesz, aby liczby losowe zaczy powtarza si w tej
samej kolejnoci przed zainicjowaniem generatora, wywoaj funkcj  z parametrem ujemnym, a nastpnie zainicjuj generator liczb
losowych. Wyjani to poniszy przykad:
 
 !  
 "
# ! $
   % $&
'(  
)*
+  
 "
# ! $
   % $&
'( $ 
)*
, 

W przykadzie otrzymamy dwie kolumny z wygenerowanymi


losowo liczbami z zakresu 0 do 1. Losowo, lecz w tej samej kolejnoci.

Rozdzia 3. Elementy Visual Basica

79

Abs
Oblicza warto bezwzgldn (modu) podanej liczby, czyli odcina znak minus, jeeli wystpuje.
Skadnia:
 

  dowolna liczba rzeczywista.

Sgn
Zwraca warto w zalenoci od znaku podanego argumentu.
Skadnia:
 

  dowolna liczba rzeczywista.


Funkcja zwraca nastpujce wartoci:
"

gdy argument jest mniejszy od zero,

&

gdy argument jest rwny zero,

gdy argument jest wikszy od zero.

Fix, Int
Zwracaj cz cakowit argumentu.
Skadnia:
 * 
- 

  dowolna liczba rzeczywista.


W zakresie liczb dodatnich funkcje odcinaj cz uamkow argumentu. Rnice w dziaaniu s widoczne podczas dziaa na

80

VBA dla Excela 2002/2003. Leksykon kieszonkowy

liczbach ujemnych.  zaokrgla argument w d, podczas gdy


 w gr.
Przykad:
.$
 .$
".$
 ".$

Da wynik 3
Da wynik 3
Da wynik 4
Da wynik 3

Operatory matematyczne
Znak

Opis

Skadnia przykad uycia

/
0 1
 2
3

Znak potgowania
Znaki odejmowania i dodawania
Znaki mnoenia i dzielenia
Zwraca cz cakowit z wyniku
dzielenia. Dodatkowo dzielna i dzielnik
przed wykonaniem oblicze zostan
pozbawione czci uamkowej
Zwraca reszt z dzielenia
Suy do czenia dwch cigw znakw

wynik = liczba^wykadnik
wynik = skadnik + skadnik
wynik = dzielna/dzielnik
wynik = dzielna\dzielnik

4
5

reszta = dzielna Mod dzielnik


wynik = acuch1&acuch2

Round
Zwraca liczb zaokrglon do zadanej dokadnoci.
Skadnia:
  (  

  wymagany dowolna liczba rzeczywista poddana zaokrgleniu;


  opcjonalny wskazuje, z jak dokadnoci
(do ilu miejsc po przecinku) naley zaokrgli liczb. Jeeli
pominiesz ten parametr, funkcja zwrci liczb cakowit.

Rozdzia 3. Elementy Visual Basica

81

Data i czas
Hour, Minute, Second
Funkcje zwracaj godzin, minut lub sekund z podanego argumentu. Argumentem moe by liczba w postaci dziesitnej lub
w formacie czasu.
Przykad:
&67.888887
9$:6:$
49

W obu powyszych przypadkach funkcja zwrci liczb 14, bowiem


obydwa argumenty przedstawiaj t sam godzin. Analogicznie:
&67.888887

da wynik 15. Natomiast:


&67.888887

da wynik 12

Day, Month, Year



 zwraca liczb o wartoci od 1 do 31 reprezentujc kolejny
dzie miesica.
 zwraca liczb w zakresie od 1 do 12 reprezentujc miesic

roku z podanej daty.


!
 zwraca rok z podanej daty.

Skadnia:


 
!


gdzie  to wyraenie reprezentujce dat.

82

VBA dla Excela 2002/2003. Leksykon kieszonkowy

Weekday
Funkcja zwraca warto liczbow (od 0 do 7) reprezentujc dzie
tygodnia wskazanej daty.
Skadnia:
"#
(     

 wymagany;
     opcjonalny wskazuje pierwszy dzie
tygodnia.
Przykad:
"#
($ zwrci warto 1, jeeli rozpatrywany dzie bdzie
poniedziakiem.
"#
( zwrci warto 1 dla rody, 2 dla czwartku i tak

dalej.
Domyln wartoci parametru pierwszy jest 1 (czyli niedziela).

TimeSerial
Zwraca w wyniku czas.
Skadnia:

$!  (  ( "  

!  ,  , "   wymagane dowolne dodatnie


liczby cakowite.
Przykad:

$$( .( ;

Da w wyniku godzin 2:34:07

Rozdzia 3. Elementy Visual Basica

83

TimeValue
Konwertuje cig znakw o ustalonej skadni na zmienn zawierajc czas.
Przykad:
% #<=:.6:;
4= da w wyniku zmienn typu > wskazu-

jc czas 16:35:17.

DateSerial
Zwraca w wyniku dat.
Skadnia:


$# (   $(  

# ,   $,   wymagane dowolne liczby cakowite.


Przykad:


$&( ( ;

Da w wyniku dat 07.04.2000 roku



$77( ( ;

Da w wyniku dat 07.04.1999 roku



$&&( ( ;

Da w wyniku dat 07.04.100 roku

Warto stosowa peny (czterocyfrowy) zapis roku, aby unikn


pomyek pokazanych powyej.

DateValue
Konwertuje cig znakw o ustalonej skadni na zmienn typu >
zawierajc dat.
Przykady:

%
$=? . .&&$=

%
$=. ? .&&$=

W powyszych linijkach zostanie obliczona data 3.02.3002 roku.

84

VBA dla Excela 2002/2003. Leksykon kieszonkowy


%
$=. $ .&&$=

%
$=.($(.&&$=

Po wykonaniu powyszych polece program zwrci warto


2.03.3002 roku.
Poniszy zapis spowoduje bd:

%
$.( $( .&&$

VBA obsuguje daty z zakresu od 1.01.100 do 31.12.9999 roku i wyraenia zawierajce takie wartoci mog zosta podstawione jako
argument funkcji > .

DateAdd
Dodaje do podanej daty okrelony interwa czasowy.
Skadnia:

 %
( ( 

 %
wymagany podaje, jaki przedzia czasowy bdzie dodany do daty.
Moliwe wartoci:
????

Rok

Kwarta

Miesic

Dzie roku

Dzie

Dzie tygodnia



Tydzie

Godzina

Minuta

Sekunda

Rozdzia 3. Elementy Visual Basica

85

Na potrzeby funkcji 
 parametry ?, , i  oznaczaj zawsze
dodanie dnia do wskazanej daty. Jednak przy innych funkcjach
daty i czasu parametry te maj ju rne znaczenia.
 wymagany wskazuje, ile interwaw czasowych
ma by dodanych;
 wymagany data bazowa.
Przykad:
 > $( ( ; !?#? A &;&$&&$
B 
==( .( 
B$ 
==( .( 
B. 
=@=( .( 
B 
==( .( 
B6 
=????=( .( 

W wyniku dziaania powyszego kodu zmienne przyjm nastpujce wartoci:


B

2002-04-07 00:03

B$

2002-04-10

B.

2003-01-07

B

2002-04-28

B6

2005-04-07

DateDiff
Zwraca rnic midzy podanymi datami.
Skadnia:

&& %
( ( &(    (    # 

 %
wymagany patrz funkcja >C;
, & wymagane daty, midzy ktrymi zostanie
obliczona rnica;

86

VBA dla Excela 2002/2003. Leksykon kieszonkowy

     opcjonalny staa wskazujca pocztek


tygodnia. Moliwe s wartoci od & (niedziela) do ; (sobota)
lub stae z kolekcji D>?EF;
   #  opcjonalny staa wskazujca, w jaki sposb
ma zosta wskazany pierwszy tydzie roku.
Moliwe wartoci:
DG?# lub &

Uywa ustawie systemowych

D H lub 

Pierwszym jest tydzie zawierajcy dzie 1 stycznia

D >? lub $

Pierwszym jest tydzie, w ktrym przynajmniej cztery dni


nale do nowego roku

D  lub .

Pierwszy peny tydzie roku

DatePart
Oblicza, w jakiej czci interwau czasowego mieci si podana
data.
Skadnia:

'
 %
( (     (    # 

Parametry zostay opisane przy funkcjach >> FF i >C.


Przykad:
 > $( ( ; !?#? A &;&$&&$
B 
'
==( 
B$ 
'
=?=( 
B. 
'
=@=( 
B 
'
==( 
B6 
'
=????=( 

W wyniku dziaania powyszego kodu, zmienne B przyjm


nastpujce wartoci:

Rozdzia 3. Elementy Visual Basica

87

B

wskazana data to niedziela

B$

97

wskazana data to 97. dzie roku

B.

kwiecie jest w drugim kwartale

B

15

wskazan dat obejmuje 15. tydzie roku

B6

2002 wskazan dat obejmuje rok 2002

Date, Now, Time



 zwraca dzisiejsz dat;
 zwraca aktualny czas;
() zwraca wyraenie w postaci dzisiejszej daty i aktualnego
czasu.
Wartoci s obliczane na podstawie z zegara systemowego.
Skadnia:
!#  

!#  
!#  ()

Funkcje bezparametrowe.

Timer
Wskazuje, ile sekund (wraz z uamkami) upyno od pnocy.
Funkcja bezparametrowa.
Skadnia:
!#  

MonthName
Podaje (po polsku!) nazw miesica.

88

VBA dla Excela 2002/2003. Leksykon kieszonkowy

Skadnia:
 (
'( " ( 

' wymagany podaje numer miesica;


" (  opcjonalny jeeli wprowadzisz warto %,
to nazwa miesica bdzie podana w formie skrconej (na
przykad mar zamiast marzec). Domylna warto to .

WeekdayName
Podaje (po polsku) nazw dnia tygodnia.
Skadnia:
"#
(
 ( " ( (     

  wymagany numer dnia;


" (  opcjonalny. Patrz funkcja 4)#;
     opcjonalny wskazuje pierwszy dzie tygodnia. Patrz funkcje >? i >> FF.

Calendar
Waciwo, ktra zwraca lub ustawia rodzaj uywanego kalendarza w Twoim projekcie.
Skadnia:

$
 

Moliwe s dwie wartoci parametru:


D'I+ lub & Kalendarz gregoriaski
D'J  lub  Hidra kalendarz ksiycowy uywany w krajach islamskich

Rozdzia 3. Elementy Visual Basica

89

Interakcja z uytkownikiem
MsgBox
Wywietla okno komunikatu. Moe take suy do pobierania
danych od uytkownika.
Skadnia:
*   ( )  ( 
( ) )( *  

  wymagany komunikat, ktry zostanie wywietlony moe nim by cig do 1024 znakw lub zmienna;
)  opcjonalny niesie informacj o tym, jakie
przyciski bd wywietlone w oknie oraz jaki bdzie typ
komunikatu. Z typem komunikatu wie si wywietlana
w oknie ikona i efekty dwikowe (jeeli uytkownik z nich
korzysta).
Wartoci przyciskw okna:
DEKE? lub &
DEK' lub 
DC?-+ lub $
DL)' lub .
DL) lub 
D?' lub 6
D4+M*JM lub N.8

Warto domylna tylko przycisk OK


Przyciski OK i Anuluj
Przyciski Przerwij, Ponw prb, Ignoruj
Tak, Nie, Anuluj
Tak, Nie
Ponw prb, Anuluj
Dodatkowo przycisk Pomoc

Wartoci typu komunikatu:


D'   lub N

Zatrzymanie krytyczne

DO  lub .$

Pytanie

D,*#  lub 8
D-F#  lub N

Ostrzeenie

90

Informacja

VBA dla Excela 2002/2003. Leksykon kieszonkowy

D4+M* + lub 6$$88

Tekst jest wyrwnany do prawej

D4+M* + lub &86;N

Arabski ukad okna (od prawej do lewej)

Odpowiedni warto parametru


!?  oblicza si przez dodanie do siebie wartoci staych (mona poda skadniki rozdzielone znakiem + lub ich sum) albo podanie ich nazw rozdzielonych znakiem +.

opcjonalny komunikat, ktry bdzie widoczny
na pasku tytuu (jeeli go pominiesz, zostanie tam wywietlona nazwa Microsoft Excel);
) ), *   plik pomocy i miejsce w nim, do ktrego prowadzi bdzie cze po klikniciu przycisku Pomoc.
Funkcja * moe zwrci wartoci w zalenoci od akcji podjtej przez uytkownika:
DEK lub 
D' lub $
DC lub .
D? lub 
D-+ lub 6
DL lub N
D) lub ;

Kliknito przycisk OK
Kliknito przycisk Anuluj
Kliknito przycisk Przerwij
Kliknito przycisk Ponw Prb
Kliknito przycisk Ignoruj
Kliknito przycisk Tak
Kliknito przycisk Nie

InputBox
Wynikiem wykonania tej funkcji jest warto typu  + wpisana przez uytkownika w oknie dialogowym.
Skadnia:
 * * ( 
(  ( +( ( ) )(
*  

Rozdzia 3. Elementy Visual Basica

91

*  wymagany par sw zachty dla uytkownika bd one wywietlone w oknie komunikatu;

opcja komunikat ktry bdzie widoczny na pasku
tytuu jeeli go pominiesz, zostanie tam wywietlona nazwa Microsoft Excel;
  opcja zawiera warto domyln wprowadzanej zmiennej bdzie wywietlana w miejscu wprowadzania danych (jeeli pominiesz ten parametr, Excel nie wywietli adnej wartoci w oknie);
+, , opcja wsprzdne (w pikselach) lewego grnego
naronika okna dialogowego wzgldem lewego grnego naronika ekranu;
) ), *   plik pomocy i miejsce w nim, do ktrego prowadzi bdzie cze po klikniciu przycisku Pomoc.
Przykad:
Efektem wykonania poniszego kodu bdzie okno dialogowe pokazane na rysunku 3.1. Jeeli uytkownik nie wprowadzi adnej
wartoci i kliknie OK, zmiennej  zostanie przypisana warto 2.
Jeeli wybierze przycisk Cancel, funkcja zwrci warto cigu zerowej dugoci.
 -M*=P =( =4  =( $

Rysunek 3.1. Okno dialogowe wywietlone za pomoc funkcji InputBox

92

VBA dla Excela 2002/2003. Leksykon kieszonkowy

Funkcje logiczne
VBA oferuje pen gam oglnie znanych operatorw logicznych:
(, , +, ,, -,  

Wszystkich oprcz operatora ( moemy uywa w taki sam


sposb:
?  QR  QR$

gdzie QR i QR$ to wyraenia, na ktrych dokonuje si


operacji.
Operator ( ma jeszcze atwiejsz skadni:
?  ( +#

czego wynikiem bdzie oczywicie odwrotno podanego argumentu.

Rozdzia 3. Elementy Visual Basica

93

You might also like