Click here to load reader

PROGRAMOWANIE W EXCELU W JĘZYKU VISUAL BASIC tezet.zut.edu.pl/PLIKI/VBA/Instrukcja VBA-Excel-2013 wer 2.pdf · PDF filez istniejącą w EXCEL’u funkcją DELTA. T.Ziębakowski

  • View
    220

  • Download
    2

Embed Size (px)

Text of PROGRAMOWANIE W EXCELU W JĘZYKU VISUAL BASIC tezet.zut.edu.pl/PLIKI/VBA/Instrukcja VBA-Excel-2013...

ZACHODNIOPOMORSKI UNIWERSYTET TECHNOLOGICZNY

INSTYTUT TECHNOLOGII MECHANICZNEJ

PROGRAMOWANIE W EXCELU W JZYKU

VISUAL BASIC FOR APPLICATIONS

wersja 2 zmieniona

mgr Tadeusz Zibakowski

Szczecin, 2013

T.Zibakowski PROGRAMOWANIE str. 3

Wstp

Opracowanie zawiera zestaw wicze przeznaczonych do zaj laboratoryjnych

z przedmiotw Podstawy informatyki i algorytmizacji oraz Informatyka II realizowanych na

I roku studiw. Celem tych wicze jest wprowadzenie studenta w podstawowe zagadnienia

algorytmizacji i programowania, gwnie w zakresie programowania strukturalnego. Jako

narzdzie programistyczne wybrano jzyk Visual Basic for Applications, ktry jako jzyk

skryptowy moe by wykorzystywany do tworzenia zarwno prostych makr jak

i rozbudowanych aplikacji. Wszystkie wiczenia osadzone s w strukturze arkusza

kalkulacyjnego, ktry oferuje atwy dostp do danych i jest zarazem rdem ciekawych

problemw programistycznych. Niezbdne do wicze pliki Excela z danymi, mona pobra

ze strony internetowej autora http://tezet.zut.edu.pl lub z zasobw serwera dydaktycznego.

Poniewa zakada si, e student na wykadzie otrzymuje wiedz niezbdn do pracy na

zajciach laboratoryjnych, opis wicze nie zosta wzbogacony o szerszy materia pojciowy.

Podstawowe informacje na temat jzyka Visual Basic for Applications mona jednak znale

w dodatku zamieszczonym na kocu opracowania.

Zawarto:

wiczenie 1 ..................................................................................... 5

wiczenie 2 ..................................................................................... 9

wiczenie 3 .................................................................................... 12

wiczenie 4 .................................................................................... 14

wiczenie 5 .................................................................................... 16

wiczenie 6 .................................................................................... 18

wiczenie 7 .................................................................................... 22

wiczenie 8 .................................................................................... 25

wiczenie 9 .................................................................................... 29

DODATEK ....................................................................................... 33

http://tezet.zut.edu.pl/

T.Zibakowski PROGRA MOWANIE str . 5

W I C Z E N I E 1

Zagadnienia:

Nagrywanie makr i ich edycja w edytorze VBA.

Podstawowe elementy jzyka Visual Basic for Applications: zmienne i ich typy, instrukcje deklaracji i podstawienia.

Dostp do danych arkusza kalkulacyjnego za pomoc obiektu Range.

Instrukcja warunkowa If.

Procedura MsgBox.

1. Nagrywanie makra Zadanie 1. Rejestrowanie makra.

W nowym arkuszu wykonaj nastpujce czynnoci:

1. Na karcie Deweloper wybierz polecenie Zarejestruj makro w grupie Kod. 2. Zmie nazw makra na. Adam i wybierz klawisz skrtu na Ctrl-a

i potwierd OK rozpocz si tryb nagrywania makra.

3. W wybranej komrce wpisz napis Adam, potwierd wpisany napis myszk na pasku formuy.

4. Zakocz nagrywanie makra przyciskiem . 5. Wybierz now komrk i nacinij Ctrl-a. 6. Przejd do edytora VBA za pomoc kombinacji klawiszy Alt+F11 i kliknij na

znak + przy Modules i dwukrotnie na Module1:

Sub Adam()

'

' Adam Makro

'

' Klawisz skrtu: Ctrl+a

'

ActiveCell.FormulaR1C1 = "Adam"

End Sub

7. Zmie napis Adam na Adam i Ewa i ponownie uruchom makro w nowej wybranej komrce arkusza.

2. Obiekt Range

Zadanie 2

Wpisz w edytorze VBA w Module1 makro:

Sub Dodaj()

Range("C1")= Range("A1")+ Range("B1")

End Sub

W Arkuszu wpisz do komrek A1 i B1 dowolne wartoci liczbowe i wykonaj makro.

Napisy na zielono zaczy-

najce si od apostrofu to

komentarz

T.Zibakowski - PROGRAMOWANIE

str. 6

Uwaga. W VBA istnieje rwnie prostsza forma zapisu zmiennej zwizanej

z komrk arkusza kalkulacyjnego. Zamiast np. Range("C1")mona te stosowa

zapis [C1], zatem powysze makro mona zapisa nastepujco:

Sub Dodaj1()

[C1]= [A1]+ [B1]

End Sub

Ostrzeenie. W VBA mona utworzy zmienn o nazwie np. A1. Jeli jest taka

zmienna to VBA nie interpretuje zapisu [A1] jako odwoania do komrki A1.

Aby odwoa si do komrki A1 naley wwczas zastosowa zapis Range("A1").

Zadanie 3

Naley obliczy warto wyraenia:

22

22

1

1

baba

baba

(*)

dla wartoci a,b znajdujcych si w komrkach odpowiednio A1 i B1. W tym celu

napisz nastpujce makro:

Sub Wynik()

Dim a As Double ,b As Double ,c As Double

a = [A1]

b = [B1]

c =

[C1] = c

End Sub

Po wpisaniu wartoci do A1 i B1 i uruchomieniu makra, w komrce C1 pojawi

wynik.

Przykadowe wyniki przedstawia tabela poniej.

a b c

1 1 0

1 -1 -0,366025

0 0 1

Zadanie 4

Napisz makro, ktre zamienia wartoci dwch komrek, np. A2 i B2. (Wskazwka:

wprowad dodatkow zmienn typu Variant w celu zapamitania wartoci jednej

z komrek).

3. Instrukcja warunkowa If ThenElsei procedura wewntrzna MsgBox

Dzielenie dwch liczb czsto wymaga sprawdzenia czy dzielnik jest rny od 0.

Takiego sprawdzenia mona dokona za pomoc instrukcji warunkowej.

tu naley wypisa wyraenie zmiennych a i b obliczajce (*), skonstruowane na zasadach podobnych do pisania formu EXCELA

T.Zibakowski PROGRA MOWANIE str . 7

Zadanie 5

Napisz makro:

Sub Sprawd()

If [B3] 0 Then [C3] = [A3]/[B3] Else [C3]= "Bd"

End Sub

Wstawiaj do komrek A3 i B3 rne wartoci w tym rwnie 0 i uruchamiaj makro.

Nastpnie przepisz makro w alternatywnej postaci i sprawd jego dziaanie:

Sub Sprawd1()

If [B3] 0 Then

[C3] = [A3]/[B3]

Else

[C3]= "Bd dzielenia przez zero"

End If

End Sub

Nastpnie zamiast instrukcji [C3]= "Bd dzielenia przez zero"

wpisz:

[C3]= ""

MsgBox "Bd dzielenia przez zero"

Sprawd dziaanie makra.

Zadanie 6

Uzupenij zarys makra przedstawionego poniej, ktrego zadaniem jest rozwizanie

rwnania kwadratowego 02 cbxax w liczbach rzeczywistych Wykorzystaj

schemat blokowy algorytmu znajdujcego si obok. Wspczynniki a,b,c wpisz do

komrek A1,B1,C1. Pierwiastki, jeli s, makro powinno umieci w komrkach D1

i E1. Dodatkowe komunikaty mona wpisa do wybranej komrki lub wywietli

poleceniem MsgBox.

Sub rwnanie_kwadratowe()

Dim a As Single, b As Single, c As Single, d As Single

a = [A1]

b = [B1]

c = [C1]

If Then

If Then

[D1]=

[E1]=

Else

End If

Else

End If

End Sub

Odczytaj:

a,b,c

a 0

d0

d = b2 - 4ac

To nie jest

rwnanie

kwadratowe

Nie ma

rozwiza

rzeczywistych

T

T

N

N

a

dbx

2

T.Zibakowski - PROGRAMOWANIE

str. 8

Przetestuj dziaanie makra na przykadowych danych:

a b c wynik

1 1 -2 x1 = 1 lub x2 = -2

0 1 1 To nie jest rwnanie kwadratowe

1 0 1 Nie ma rozwiza rzeczywistych

Zadania domowe

Zaprojektuj makro, ktre rozwizuje ukad dwch rwna liniowych z dwoma

niewiadomymi:

222

111

cybxa

cybxa

Wspczynniki iii cba ,, mona wpisa do zakresu A1:C2. Makro powinno

zbada kiedy mamy do czynienia z ukadem:

- oznaczonym i wtedy makro powinno wypisa rozwizania,

- nieoznaczonym,

- sprzecznym.

Poza tym makro powinno zbada pewne zoliwe przypadki, gdy

wspczynniki iii cba ,, nie wyznaczaj ukadu rwna z dwoma

niewiadomymi. Makro mona przetestowa na nastpujcych danych:

1 1 2 ukad oznaczony

1 -1 0 x = 1 oraz y = 1

1 1 1 ukad nieoznaczony

1 1 1

1 1 1 ukad sprzeczny

1 1 -1

0 1 1 to nie jest ukad rwna

0 1 -1 z dwoma niewiadomymi

Wskazwki:

Jeli 021 aa lub/i 021 bb to nie mamy dwch niewiadomych.

Przyjmijmy 2121 abbaD , 2112 cbcbDx , 2112 cacaDy . Z algebry

wiadomo, e mog zachodzi trzy podstawowe przypadki:

a) jeli 0D to mamy jedno rozwizanie DDx x / i DDy y / .

b) Jeli 00,0 yx DiDD to mamy nieskoczenie wiele rozwiza: dla

dowolnego x, iii bxacy /)( spenia ukad rwna (zakadamy e

przynajmniej jedno 0ib )

c) Jeli 0lub0oraz0 yx DDD to ukad nie ma rozwiza.

T.Zibakowski PROGRA MOWANIE str . 9

W I C Z E N I E 2

Zagadnienia:

Obiekt ActiveCell

Funkcje VBA - tworzenie i uycie w formuach arkusza kalkulacyjnego

Wywoywanie funkcji VBA z poziomu innych funkcji VBA i makr

1. Obiekt ActiveCell

W nowym arkuszu Excela uruchom edytor VBA i wstaw nowy modu:

Insert Module

Zadanie 1

Wpisz w edytorze VBA makro:

Sub

Search related