VBA - AGH

Transkrypt

VBA - AGH
Techniki Informatyczne
Ir, In»ynieria ‘rodowiska, 2013/2014
copyright: KGiIS
WGGiO‘ AGH
Microsoft Excel - VBA
Funkcje i procedury
Excel umo»liwia tworzenie wªasnych funkcji i procedur przy u»yciu skªadni j¦zyka VBA. Gªówna ró»nica pomi¦dzy nimi polega na tym, »e funkcja
mo»e zwraca¢ warto±¢. Pozwala to na ªatwe deniowanie wªasnych formuª,
uªatwiaj¡c w ten sposób prac¦ z Excelem.
Dost¦p do edytora makr: karta Developer => Visual Basic. Karta Developer jest dost¦pna po wybraniu odpowiedniej opcji w opcjach programu Excel.
1
Deklaracje funkcji i procedur
Funkcje deniowane s¡ z u»yciem sªowa kluczowego function, np.
Function funkcja(arg1 As Integer, arg2 As Double) As String
kod funkcji
End Function
Funkcja ta przyjmuje dwa argumenty liczbowe (arg1 - liczba caªkowita, arg2 - liczba zmiennoprzecinkowa), a zwraca ªa«cuch znakowy (string).
Liczba argumentów wej±ciowych mo»e by¢ dowolna, oddzielona przecinkami. Po deklaracji typu funkcji nast¦puje kod funkcji zako«czony poleceniem
end function.
W przypadku procedur sªowo kluczowe Function zast¦powane jest sªowem Sub. Poniewa» procedura nie zwraca »adnej warto±ci, po li±cie argumentów nie wyst¦puje instrukcja As. Dla przykªadu:
Sub Procedura(arg1 As Integer, arg2 As Double)
kod procedury
End Sub
1.1
Typy zmiennych
Podstawowymi typami zmiennych s¡:
• Boolean - typ logiczny true / false,
• Byte, typ caªkowitoliczbowy bez znaku, 1 bajtowy, zakres 0 - 255
• Integer - typ caªkowitoliczbowy, 2 bajtowy, w zakresie od -32 768 do 32
767
• Long - typ caªkowitoliczbowy, 4 bajtowy.
• Single, Double - typ zmiennoprzecinkowy pojedynczej i podwójnej pre-
cyzji
• String - ªa«cuch znakowy (tekst)
• Date - data
• Object - obiekt
1
Techniki Informatyczne
Ir, In»ynieria ‘rodowiska, 2013/2014
1.2
copyright: KGiIS
WGGiO‘ AGH
Instrukcje steruj¡ce
Instrukcje steruj¡ce sªu»¡ do warunkowego wykonywania bloków kodu.
Do instrukcji steruj¡cych zaliczamy:
• instrukcje if-else:
if warunek then
else
kod1
kod2
end if
W przypadku, gdy speªnienia warunku wykonywana jest instrukcja
kod1. Instrukcja else jest opcjonalna i zawiera kod wykonywanych,
gdy warunek nie jest speªniony.
• instrukcje Select-Case. Jest to instrukcja wielokrotnego wyboru, np.:
Select Case Range("A1").Value
Case 2
Range("B1").Value = "ndst"
Case 3
Range("B1").Value = "dst"
Case 3.5
Range("B1").Value = "pdst"
Case 4
Range("B1").Value = "db"
Case 4.5
Range("B1").Value = "pdb"
Case 5
Range("B1").Value = "bdb"
Case Else
Range("B1").Value = "nieklas."
End Select
W zale»no±ci od warto±ci w komórce o adresie A1, w komórce B1 wpisywany jest odpowiedni tekst. Instrukcja Case Else jest wykonywana,
gdy »aden z powy»szych przypadków nie byª speªniony.
Polecenie Range sªu»y do odwoªywania si¦ do komórek poprzez adres
bezwgl¦dny i z góry okre±lony. Je»eli odwoªanie jest zale»ne od instrukcji, wtedy korzysta¢ nale»y z polecenia Cells (przykªad w opisie p¦tli
For).
• p¦tla For-To-Next - sªu»y do wielokrotnego, z góry okre±lonego wyko-
nywania bloku instrukcji.
Dim licznik As Integer
Dim silnia As Long
silnia = 1
2
Techniki Informatyczne
Ir, In»ynieria ‘rodowiska, 2013/2014
copyright: KGiIS
WGGiO‘ AGH
For licznik = 1 To 5 Step 1
silnia = silnia * licznik
Cells(licznik, 1) = silnia
Next licznik
W poni»szym kodzie w kolejnych wierszach umieszczone s¡ warto±ci
silni. W tym celu zadeklarowano dwie zmienne pomocnicze: licznik zliczaj¡c¡ ilo±¢ wykonywanych p¦tli oraz silnia przechowuj¡ca kolejne
warto±ci funkcji silni. Instrukcja Step deniuje zmian¦ warto±ci licznika
(o ile warto±¢ zmiennej licznik ma si¦ zwi¦ksza¢ w ka»dej iteracji).
Je»eli warto±¢ kroku jest równa 1, instrukcja ta mo»e by¢ pomini¦ta.
Zbli»on¡ instrukcj¡ jest Do-Loop oraz Do While-Loop. W obu przypadkach kod instrukcji wykonuje si¦, dopóki speªniony jest warunek.
• For Each-Next - sªu»y do obsªugi zbiorów danych (kolekcji). Dla przy-
kªadu:
For Each element In Range("A1:A10")
If element.Value < 0.5 Then
element.Interior.Color = RGB(255, 0, 0)
End If
Next
2
‚wiczenia
1. Napisz funkcj¦ obliczaj¡c¡ dªugo±¢ wektora (wzór:1)
D(x, y, z) =
q
x2 + y 2 + z 2
(1)
2. Napisz procedur¦, która w zadanym a priori obszarze liczby parzyste
koloruje na zielono, a nieparzyste na czerwono.
3. Napisz procedur¦, która tworzy tabliczk¦ mno»enia.
4. Napisz procedur¦, która dla kolumny zªo»onej z dat, sprawdza jaki to
dzie« tygodnia, a nast¦pnie w s¡siedniej kolumnie w formie sªownej
zapisuje (np. wtorek).
5. Napisz procedur¦, która generuje wspóªrz¦dne punktu znajduj¡ce si¦ z
kole o zadanych parametrach (wspóªrz¦dne ±rodka i dªugo±¢ promienia).
6. Napisz funkcj¦, która oblicza miejsca zerowe dwumianu kwadratowego o
wspóªczynnikach a,b,c zapisanych w komórkach A1:A3. Wynik zapisa¢
w komórkach B1:B2
7. Napisz funkcj¦, która oblicza ukªad dwóch równa« liniowych metod¡
Cramera.
3