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