You are on page 1of 10

Wykorzystanie Visual Basic do automatyzacji oblicze w Excelu

1. Umieszczanie przyciskw w arkuszu


1.1.
1.2.
1.3.

Z menu Narzdzia naley wybra Dostosuj i zakadk Paski narzdzi i zaznaczy


Przybornik formantw.
Z przybornika wybra Przycisk polecenia i umieci za pomoc myszki w arkuszu.
Klikajc dwukrotnie na przycisku przechodzimy do edytora Visual Basic.

2. Adresowanie komrek w VB
W arkuszu kalkulacyjnym kada z komrek ma okrelony adres przez numer kolumny i wiersza,
na przeciciu ktrych ley. Kolumny oznaczone s kolejnymi literami, wiersze liczbami. I tak
w tabeli poniej, przedstawiajcej fragment arkusza kalkulacyjnego, komrka, w ktrej znajduje
si litera x, ma adres C1.
W Visual Basicu komrki arkusza adresowane s za pomoc liczb, przy czym pierwsz liczb
okrela si wiersz, a drug kolumn. W tabelce poniej przedstawiono odpowiednie adresy
komrek w Excelu i Visual Basicu. Dodatkowo, by zaznaczy, e odwoujemy si do komrki
arkusza, musimy liczby oddzieli przecinkiem, umieci w nawiasie okrgym i napisa przed nimi
sowo Cells (ang. komrki). W ten sposb w trakcie wykonywania program uyje zawartoci
zaadresowanej przez komrki znajdujcej si w arkuszu, z ktrego program zosta wywoany.
Jeeli si zdarzy, e odniesiemy si do komrki znajdujcej si w innym arkuszu, musimy wtedy
poprzedzi wywoanie nazw tego arkusza, np. Arkusz2.Cells(1,3).
A

C
x

E
C1
kolumna

3
4
Arkusz Excel

B3
E2

Cells(1,3)
wiersz

wiersz

kolumna

VB w Excelu
Zadanie do wykonania:
Uzupenij tabelk wpisujc odpowiednie
adresy komrek.

2/8
EXCEL
A1
B7

Visual Basic
Cells(3,3)

G8
H1
Cells(1,2)
Podsumowanie:

Okrelajc adres komrki w formule arkusza podajemy najpierw numer kolumny opisany
za pomoc litery, a nastpnie numer wiersza, ktry jest liczb.

Adres komrki arkusza w VB okrelony jest przez sowo Cells oraz podane w nawiasach
numer wiersza i numer kolumny:
Cells(nr_wiersza, nr_kolumny).
Gdy korzystamy dwch danych umieszczonych w innych arkuszach, adres komrki podajemy
wtedy jako Worksheets(Nazwa_arkusza).Cells(nr_wiersza, nr_kolumny).

VB w Excelu

3/8

Dodawanie dwch liczb przykadowy program w VB


2.1.

Umiejscowienie danych w arkuszu i schemat blokowy

A
Liczba A

Liczba B

3
4

Suma
Cells(1,2)
Cells(2,2)
Cells(4,2)

VB w Excelu
2.2.

4/8

Program
START

CZYTAJ A

CZYTAJ B

S <- A + B
WYPISZ S

STOP

zanim wpiszemy program musimy umieci


w arkuszu przycisk
program naley wpisa pomidzy linie Private Sub
CommandButton1_Click()
2.2.1. End Sub
A = Cells(1,2)
B1
B = Cells(2,2)
B2
S =A+ B
Cells(4,2) = S
komrka B4

wpisz do A zawarto komrki


wpisz do B zawarto komrki
wynik dodawania wpisz do zmiennej S
umie wynik w arkuszu,

Po znaku umieszczony zosta komentarz,


ktry suy jedynie jako informacja dla piszcego
lub uytkujcego program, a nie ma wpywu
na wykonanie programu.
Zapisz napisany program

Przejd do arkusza, wycz tryb projektowania


i sprawd dziaanie programu pisujc dane
do odpowiednich komrek arkusza i uruchamiajc procedur przyciskiem.
2.3.
Zadanie
Zmodyfikuj arkusz dodajc trzy procedury realizujce odpowiednio:
Odejmowanie
Mnoenie i dzielenie.
W ten sposb otrzymamy prosty kalkulator.
Sprbuj wykona dzielenie przez zero i sprawd reakcj kalkulatora na takie dziaanie.

3. Inteligentny kalkulator (odporny na dzielenie przez zero)


Dzielenie przez zero jest w matematyce zabronion operacj. Czasami jednak si zdarzy,
e wpiszemy dane bez zastanowienia, pomylimy ich adres lub w wyniku wczeniej wykonanych
dziaa otrzymamy zero. Nasz nowy kalkulator ma za zdanie poda nam informacj
o wprowadzeniu zych danych. Czyli, jeli w arkuszu w komrce B2 pojawi si zero, nasz program
jako wynik dziaania powinien napisa Nie dziel przez zero!.
Zmodyfikujemy teraz nasz kalkulator. Dodamy przycisk o nazwie mdre dzielenie. Nowy algorytm
przedstawiony jest na nastpnej stroniej.
Program realizujcy algorytm ma posta:

VB w Excelu

5/8

A = Cells(1,2)

wpisz do A
zawarto

START

komrki B1

B = Cells(2,2)
CZYTAJ
A
CZYTAJ
B

B=
0?
S <- A + B

wpisz do B
zawarto komrki B2
sprawd, czy w komrce B2 jest zero

If B = 0 then
jeli B2 = 0, to wynik jest
tekstem o dzieleniu przez zero

Cells(4,2) = Nie dziel przez


zero
Else
w przeciwnym razie, B
0

wykonaj ponisze polecenia


iloraz A i B
wpisz do zmiennej S

Pisz:
Nie dziel przez zero

S = A/ B

WYPISZ
S

STOP

wynik wpisz do komrki B4


Cells(4,2) = S
zakocz instrukcj warunkow

End If

4. Instrukcja warunkowa If
Instrukcja jest stosowana wtedy, gdy wykonanie pewnych czynnoci zaley od spenienia lub
niespenienia postawionego warunku.
Instrukcja warunkowa If ... moe mie
posta:

If warunek then polecenie


gdzie
Speniony
warunek
T
If sowo kluczowe oznaczajce pocztek
Niespeniony
instrukcji warunkowej
N
W tym przypadku, gdy warunek jest
polecenie
speniony, wykonujemy zwizane z nim
polecenie, po czym przechodzimy
do kolejnego polecenia. Jeli warunek nie
zostanie speniony, od razy przejdziemy
do wykonania kolejnego polecenia.
Przykadem mog by zakupy. Musimy
kupi chleb, maso i biay ser. Na te produkty mamy przeznaczone pienidze i na pewno o nie
poprosimy. Jeeli jednak wystarczy nam pienidzy na kupno Delicji (warunek czy mamy
wystarczajc ilo pienidzy na kupno ciastek?), to o nie te poprosimy (warunek speniony), a
nastpnie zapacimy (kolejne polecenie). Jeli nie mamy dodatkowych pienidzy (warunek

VB w Excelu

6/8

niespeniony), zapacimy tylko za podstawowe artykuy (od razu przechodzimy do kolejnego


polecenia).

If warunek then
polecenie _1
else
polecenie_2
End If

speniony
T

warune
k

niespeniony

polecenie_1
polecenie_2
W tym przypadku, zalenie od stanu
warunku,
wykonane
bdzie
polecenie_1 lub polecenie_2, dopiero
potem
program
przejdzie
do
kolejnego polecenia.
Zarwno znw jestemy w sklepie.
Tym razem mamy kupi czekolad. Zadanie moe wyglda tak. Jeli jest gorzka czekolada
z Wedla, to j kupujemy, jeli nie ma, to kupujemy biaa czekolad Milka. W kadym przypadku
wykonamy jak czynno. Rodzaj czynnoci zaleny jest od spenienia lub niespenienia warunku
okrelonego w zadaniu.

5. Wybr Select Case


Instrukcj t stosuje si zamiast If ... Then w przypadku, gdy mamy wicej moliwoci i instrukcji
z nimi zwizanych.
Skadnia polecenia jest nastpujca:

Select Case zmienna_testowana


Case warto_1
Instrukcje_ dla_warto_1
Case warto_2
Instrukcje_dla_ warto_2
...
Case Else
Instrukcje_dla_else
End Select
gdzie
zmienna_testowana

to dowolna zmienna liczbowa lub znakowa.

warto

to wyraenie, ktre okrela warto lub zakres, w ktrym musi znale


si zmienna_testowana, by zostay wykonane przeznaczone dla
instrukcje.

Instrukcje_dla_

Instrukcja lub instrukcje, ktre s wykonywane tylko wtedy,


gdy warunek speniony jest przez zmienn_testowan.

Do okrelenia zakresu zmiennej_testowanej mona uywa operatorw relacji wraz z odpowiednim


sowem kluczowym Is lub To.
Is stosujemy wtedy, gdy chcemy sprawdzi, czy zmienna_testowana jest mniejsza lub wiksza ni
zadana liczba. Przykadowa posta takiego warunku jest nastpujca
Case Is > 100 - co oznacza, e tu przyporzdkowane instrukcje wykonane bd wtedy, gdy warto
naszej zmiennej testowanej bdzie mniejsza od 100.

VB w Excelu

7/8

To stosujemy wtedy, gdy chcemy sprawdzi, czy zmienna_testowana zawiera si w okrelanym


przez nas przedziale.
Case 50 To 100 - co oznacza, e tu przyporzdkowane instrukcje wykonane bd wtedy,
gdy warto naszej zmiennej testowanej bdzie wiksza od 50, a mniejsza od 100.
Przykad uycia instrukcji Select Case do sprawdzania wartoci zmiennej. Warto zmiennej
Numer odpowiada drugiemu przypadkowi i zostan wykonane tylko te instrukcje, ktre s z nim
zwizane. Pozostae instrukcje zostan pominite.
Dim Numer
deklaracja zmiennej Numer
Number = 8
' inicjalizacja zmiennej, nadanie jej pocztkowej wartoci.
Select Case Numer
' sprawdzenie wartoci zmiennej Numer.
Case 1 To 5
' zmienna Numer midzy 1 a 5, wcznie.
Cells(3,3)= "Midzy 1 a 5"
' Ponisza instrukcja zostanie wykonana, poniewa warto testowana i podany warunek jest
prawd.
Case 6, 7, 8 ' Numer midzy 6 i 8.
Cells(3,3)= "Midzy 6 a 8"
Case 9 To 10 ' Numer jest rwny 9 lub 10.
Cells(3,3)= "Wiksze od 8"
Case Else ' Inne wartoci.
Cells(3,3)= "Nie zawiera si midzy 1 i 10"
End Select

1 <= Numer <=5

Numer

(testowane_wyraenie)
Numer
Cells(3,3)= "Midzy 1 a 5"

(testowane_wyraenie)
6 <= Numer <=
Cells(3,3)= "Midzy 6 a 8"

9 <= Numer <= 10

Numer

else

(testowane_wyraenie)

Cells(3,3)= "Wiksze od 8"


Cells(3,3)= "Nie zawiera si
midzy 1 i 10"

VB w Excelu

8/8

Ptle
Ptle stosowane s wtedy, gdy musimy powtrzy okrelon liczb razy pewien fragment
programu, kilka instrukcji. Zalenie od tego, czy ilo powtrze jest z gry okrelona, czy te
zalena od podanego warunku, stosujemy inny rodzaj ptli. W Visual Basicu mamy do dyspozycji
dwa podstawowe typy ptli: ptle z licznikiem, ktre powtarzaj wykonywanie zbioru instrukcji
ustalon liczb razy (For Next), oraz ptle warunkowe, powtarzajce dany kod instrukcji,
gdy dany warunek jest speniany (Do While lub Do Until).

5.1.

Ptla For Next

Skadnia ptli for jest nastpujca:

For licznik = wart_pocz To wart_kon


Polecenie (lub polecenia) powtarzane
Next licznik
lub

For licznik = wart_pocz To wart_ko Step wart_krok


Polecenie (lub polecenia) powtarzane
Next licznik
gdzie
For oznacza pocztek ptli,
licznik zmienna uywana jako licznik ptli,
wart_pocz pocztkowa warto licznika, od tej wartoci zaczyna si ptla,
To do, separator, midzy wartoci pocztkowa a kocow licznika,
wart_kon warto kocowa licznika ptli,
Next koniec ptli, sowo kluczowe,
Step sowo kluczowe, pojawia si, gdy okreli chcemy inne od 1 zmiany licznika,
wart_krok warto kroku, czyli o ile zmieni si warto licznika ptli przy kadym obrocie.
Dziaa ona nastpujco: polecenie bd polecenia wykonywane s okrelon ilo razy, zalenie od
wartoci pocztkowej i kocowej licznika oraz od kroku zadanego w wart_krok. Przy czym licznik
moe odlicza w gr bd w d, z krokiem jeden lub innym, zadanym przez piszcego program.
Przy uruchomieniu ptli licznikowi nadawana jest warto pocztkowa. Przy kadym obrocie
licznik jest zwikszany a osignie warto kocow. Warto licznika moe by zmieniana o jeden
lub o warto podan w wart_krok.
Przykadowe wykorzystanie ptli:
a. program pisuje do kolejnych
komrek kolumny C, poczwszy od
i <- 0
pierwszej, kolejne liczby cakowite,
wykonuje polecenie pidziesit
razy; licznikiem jest i, ktre przy
T
starcie przyjmuje warto jeden i w
N
i <= n ?
polecenia
kolejnych ptlach automatycznie
zwikszane
jest
o jeden tak dugo, a osignie
warto rwn pidziesit; wtedy
i <- i + 1
polecenie zostanie wykonane
po raz ostatni.

VB w Excelu

9/8

For i = 1 To 50
Cells(i,3)=i
Next i

b. Teraz licznik (j) zaczyna zlicza od wartoci 2 i zlicza do wartoci 10, jednake krok nie jest
rwny jeden, lecz dwa, czyli przy kadym przejciu licznik bdzie automatycznie
zwikszany o 2. Poleceniem jest zwikszanie wartoci zmiennej total o aktualn warto
licznika przy kadym przejciu ptli. Warto pocztkowa zmiennej total ustalona zostaa poza
ptl (przed jej rozpoczciem).
For j = 2 To 10 Step 2
total = total + j
Next j
MsgBox "The total is " & total

wyprowadzenie wyniku do okna wiadomoci

c. I tym razem licznik nie startuje od zera czy jedynki, lecz od szesnastu. Teraz ma dodatkowo
ujemny krok, czyli jest zmniejszany przy kadym obrocie o 2, bo krok ptli rwny jest 2.
Ptla zostanie zatrzymana po wykonaniu polecenia, gdy licznik osignie warto 2 (warto
kocowa licznika).
For myNum = 16 To 2 Step -2
total = total + myNum
Next myNum
MsgBox "The total is " & total

5.2.

Ptla Do...While

Jak ju wiadomo, ptla DoWhile jest ptl warunkow. Instrukcje w niej umieszczone
wykonywane s tak dugo, jak dugo okrelony warunek jest speniony. Jeeli nie bdzie on
prawdziwy, dziaanie ptli zostanie przerwane.
Skadnia instrukcji jest nastpujca:

Do While warunek
Polecenie (lub polecenia) powtarzane
Modyfikacja zmiennej umieszczonej w warunku
Loop
lub

Do While
Polecenie (lub polecenia) powtarzane
Modyfikacja zmiennej umieszczonej w warunku
Loop warunek
gdzie
Do While sowa kluczowe okrelajce pocztek ptli warunkowej,
warunek warunek, od ktrego uzalenione jest dziaanie ptli, musi by speniony, by ptla bya
wykonywana,
Loop sowo kluczowe, zamyka ptl,
Polecenie (lub polecenia) powtarzane inne instrukcje, ktre powinny by wykonane,
Modyfikacja zmiennej umieszczonej w warunku jeli nie zmienimy wartoci zmiennej
umieszczonej w warunku, nasza ptla wykonywana bdzie nieskoczenie wiele razy i program nie
zakoczy swojego dziaania. W przeciwiestwie do ptli For...Next, gdzie zmiana licznika
nastpuje samoczynnie w czasie wykonywania ptli, to my sami musimy zadba o modyfikacj
zmiennej.

VB w Excelu

10/8

W pierwszym przypadku, gdy warunek nie zostanie speniony, instrukcje umieszczone w ptli nie
zostan ju wykonane. Dzieje si tak dlatego, e warunek sprawdzany jest na pocztku ptli,
a dziaanie ptli jest przerywane wtedy, gdy nie jest on speniony. Moe si wic zdarzy,
e instrukcje umieszczone w ptli nie zostan w ogle wykonane.
W drugim przypadku warunek sprawdzany jest na kocu ptli. Teraz instrukcje zostan wykonane
przynajmniej raz, nawet jeli warunek od pocztku nie jest speniony.

niespeniony
warunek

5.3.

speniony

Polecenia
zmienna warunku

Polecenia

niespeniony
warunek

speniony

zmienna warunku

5.3.

Ptla Do.. Until

Podobnie, jak w przypadku ptli Do...While, mamy do czynienia z ptl warunkow. Jej dziaanie
zalene jest wic od zadanego w niej warunku. Jednake ptla Do... Until wykonywana jest dopki
postawiony warunek jest faszywy.
Skadnia instrukcji jest nastpujca

Do Until warunek
Polecenie (lub polecenia) powtarzane
Modyfikacja zmiennej umieszczonej w warunku
Loop
Jak wida w powyszym przykadzie zmienna MyNum ma pocztkowo warto 0, a zatem warunek
MyNum > 10 jest faszywy. Ptla ta zostanie wykonana tyle razy, a liczba MyNum nie bdzie
wiksza od 10, bo warunek sta by si wtedy prawdziwy.

speniony
warunek

niespeniony
Polecenia
zmienna warunku

You might also like