MAINSKI FAKULTET KRAGUJEVAC V B A isual asic
MAŠINSKI FAKULTET KRAGUJEVAC V B A isual asic for plication
1 Uvod u VBA n Visual Basic for Aplication ili skraćeno VBA, predstavlja programski jezik koji omogućava korisniku da programira makroe za rešavanje složenih zadataka u okviru aplikacija kao što su Excel, Word, Power Point, Access i drugi. n Primena VBA u Excel-u daje mogućnost razvoja procedura (tzv. makroa) koje profesionalni rad čine lakšim, pokazujući pritom da je moguće postići uštedu vremena u radu. VBA intro
Programsko okruženje VBA
Bezbednost i podešavanja
Visual Basic Editor u Excel-u n Visual Basic Editor ( VBE) pokrecemo opcijom Tools / Macro / Visual Basic Editor ili prečicom Alt+F 11 1 2 3
n n n Za vreme rada sa ovim editorom otvorena su tri prozora: n The Project window (1), n Code window (2) i n Properties window (3) U okviru View padajućeg menija potrebno je aktivirati dva toolbar-a: The Standard Toolbar i Edit Toolbar : Koristićemo Undo/Redo strelice kojima ispravljamo greške pisanja koda, Run koja pokreće proceduru, Reset zaustavlja izvršavanje. primer startovanja VBE
The Project Window § Objekti čine delove različitih workbooks-ova. Oni su listovi u workbook-u, zatim mogu biti forme i moduli.
n Forme i module dodajemo desnim klikom na Project Window / Insert/ Module
The Properties Window n Properties window pokazuje osobine selektovanog objekta u Project window-u. Postoji mogućnost modifikovanja ovih osobina.
n Klik na “Sheet 1” u Project window-u daje sve osobine lista: n (Name) – koje predstavlja VBA ime lista, n Name – predstavlja naslov (ime tab-a u Excel-u), n Visible – kontrola vidljivosti lista (1 -xl. Sheet. Visible, -0 xl. Sheet. Hidden ili 2 - xl. Sheet. Very. Hidden). . .
The Code window n Ulazni podaci su crne boje, komentari zeleni, rezervisane reči plave boje
Debug programa Zadatak 1 -2017. xls
Debug opcije F 9 breakpoint, tačka prekida programa n F 8, Shift+Ctrl+F 8 step / korak po korak izvršavanje programa n watch window, locals window - prozori sa tekućim vrednostima odabranih promenljivih n Shift+F 9 brzi watch n
Kreiranje makroa n Otvorićemo Excel i novu radnu svesku n Pokrećemo Tools / Macro / Visual Basic Editor n Dodajemo modul u Project Window-u n U Code Window-u kreiramo naš prvi makro (proceduru) n Zadatak je da procedura ispiše poruku “Unesite Vaše ime ” ime. xls makroa primer kreiranja
Snimanje makroa n Poktenite Tools / Macro / Record New Macro, nakon čega se pojavljuje prozor: n Ponuđen je unos naziva makroa, prečice kao i opis namene makroa
n Potvrdom postavki pojavljuje se malena traka: Levo dugme - zaustavljanje snimanja Desno dugme - odnosi se na apsolutne ili relativne reference. snimanje makroa. xls primer snimanja makroa
VBA Programiranje
2 Uvodne napomene Pravila pisanja Osnovna pravila o urednosti: n n makroi treba da se pišu pregledno što češće pisati komentare; počinju apostrofom ( ‘ ) Osnovna pravila pisanja: n sve VBA procedure (makroi) počinju sa Sub ime_makroa() a završavaju sa: End Sub
Sub poruka() Msg. Box ”Moja prva procedura” End Sub n sve VBA klauzule se pišu u jednom redu n poruka. xls Sub makro 001() zapis = Input. Box(”Unesite kriterijum: ”, _ ”Pretrazivanje”, ”xyz”) End Sub makro 001. xls što češce koristi Macro Recorder kako bi se izbeglo nepotrebno pisanje koda,
Prozori za poruke i unos podataka Message box n n Predstavlja osnovni alat za interakciju sa korisnikom. Koristi se da: n n n da daje informacije, da upozorava korisnike da od korisnika traži da izabere odgovarajući put (Yes / No poruke). Msg. Box "Your message here"
Yes/No message box Msg. Box("Da li zelis da obrises sve podatke? ", _ vb. Yes. No, "Warning") makro 002. xls n Postoje jos i vb. OKCancel i vb. Retry. Cancel Message box.
Input box n Koristi se za unos proizvoljnih vrednosti Input. Box("Za koju godinu zelite izvestaj? ") makro 003. xls
3 Objekti, metode i svojstva n n n Objekti aplikacije, radne sveske, radni listovi , ćelije. . . Svojstva osobine kojima opisujemo objekte. Metode načini rada sa objektima, recimo zatvaranje objekata, otvaranje, kopiranje itd. n n Active. Workbook Active. Sheet Range Value aktivna radna sveska aktivni radni list. objekat koji opredeljuje neki opseg. svojstvo odredjenog opsega Active. Sheet. Range("A 1"). Value a = Active. Sheet. Range(“A 1”). Value
Workbook – radna sveska Workbook. Close - zatvaranje aktivne radne sveske Workbook. Save - čuvanje aktivne radne sveske Worksheet – radni list Sheet 1. Select - aktiviranje radnog lista Celije, vrste i kolone Range("A 1"). Select - selektuje ćeliju A 1 Range("A 1: A 5"). Select - selektuje sve ćelije od A 1 do A 5 Range("A 1, A 5, B 4"). Select - selektuje ćelije A 1, A 5 i B 4 Columns("A"). Select - selektuje kolonu A Rows("1"). Select - selektuje 1. vrstu Offset Activecell. Offset(0, 3). Select Activecell. Offset(3, 0). Select - pomeranje za 3 ćelije u desno - pomeranje za 3 ćelije na dole
Čitanje i upisivanje vrednosti pri radu sa ćelijama n n n Range pristup po imenu ćelije Range(). Activate i Active. Cell direktan pristup ćeliji Cell pristup preko indeksa vrste i kolone Pristup ćeliji preko imena n Čitanje vrednosti x = Range(”test ”) makro 004. xls n Upisivanje vrednosti: Range(”Test 2”) = Range(”Test”) makro 005. xls
Direktan pristup celiji n Čitanje vrednosti: Range(”A 1”). Activate ‘ Aktivira se ćelija “A 1” x = Active. Cell. Value ‘ x uzima vrednost iz ćelije “A 1” makro 006. xls n Upisivanje vrednosti: Range(”B 1”). Activate makro 007. xls Active. Cell. Value = X Cells funkcija Cells (3, 1) = 1 A 3 ’ Upisuje broj 1 u ćeliju
4 Promenljive i operatori n Deklaracija: Dim <ime_promenljive> As <tip_podatka> Dim tekst 1 As String Tipovi podataka n n n tekst datum brojevi univerzalni tip ostali tipovi String Date Integer, Long, Simple, Double Variant Boolean, Currency, Byte i Object Napomena: Ukoliko promenljiva nije deklarisana ona automatski postaje tipa Variant.
Operatori n Aritmetički operatori '+', '-', '/', '*', '^' i 'mod' n Operatori poređenja <', '<=' , '>=' , '=' i '<>‘ n Operatori za dodelu vrednosti ‘=’: n Operatori za povezivanje stringova '&' i '+‘ n Logički operatori 'Xor' 'And', 'Eqv', 'Imp', 'Not', 'Or' i
Standardne matematičke funkcije Funkcije u VBA Objašnjenje Sin (x) sin x Cos (x) cos x Tan (x) tg x Atn (x) arc tg x Exp (x) ex Log (x) ln x Log (x) / Log (n) logn x Abs (x) |x| Sgn (x) Znak Int (x) Odbacuje decimalni deo Fix (x) Fix(x)=Sgn(x)*Int(Abs(x)) Rnd (x) Zaokruzuje na blizu vrednost Sqr (x) x
5 Kontrola toka programa Uslovni operator IF 1) Konstrukcija If. . Then. . . End If If <uslov> Then <operator 1> End If Izvršiti odgovarajuću naredbu ako je zadovoljen navedeni uslov: a) y=x 2 ako je x>0 If x > 0 Then y = x^2 End If b) y=2 x ako je x=0 If x = 0 Then y = 2*x End If c) y=x ako je x>0 If x >= 0 Then y=x End If
Napisati program za izračunavanje funkcije: makro 009. avi makro 009. xls 2) Konstrukcija If. . Then. . . Else. . . End If If <uslov> Then <operator 1> Else <operator 2> Endif Ako je a>b onda je c=a*b, Ako je a<=b onda je c=a+b. If a > b Then c=a*b Else c=a+b End If
3) Konstrukcija If. . Then. . Else. If. . . End If Definisati kategoriju vrednosti robe na osnovu sledeće tabele: If <uslov 1> Then <operator 1> Else. If <uslov 2> Then <operator 2> . . . Else. If <uslov. N> Then <operator. N> Else <operator. O> End If Rešenje 1: Rešenje 2: If V <= 50 Then IC = 1 Else If V <= 125 Then IC = 2 Else If V <= 200 Then IC = 3 Else IC = 4 End If If V <= 50 Then IC = 1 Else. If V <= 125 Then IC = 2 Else. If V <= 200 Then IC = 3 Else IC = 4 End If
Operator višestrukog izbora – Select Case <uslovna_vrednost> Case <vrednost 1> <operator 1> . . . Case <vrednost. N> <operator. N> Case Else <operator 0> End Select Zadatak: Napisati program za izračunavanje vrednosti y prema formuli: Makro 010. xl s
Klauzula Do. . Loop 1) Do While…Loop Do While <uslov> <operator> Loop brojac = 1 Do While brojac <= 10 brojac = brojac + 1 Loop 2) Do Until…Loop Do Until <uslov> <operator> Loop brojac = 1 Do Until brojac = 11 brojac = brojac + 1 Loop Napisati program za izračunavanje sume prvih N celih brojeva makro 011. avi makro 011. xls
Klauzula For. . Next For brojac = a To b <operator> Next Izračunati sumu prvih N prirodnih brojeva korišćenjem For…Next petlje: makro 012. xls Vrednost brojača pri prolazu kroz For. . Next petlju može se menjati za različite vrednosti korišćenjem operatora Step: For brojac = 1 To 10 Step 2 For brojac = 10 To 1 Step -1 Izračunati sumu svih neparnih brojeva do broja N:
Operatori skoka: Go. To i Exit Go. To: Go. To labela: operator Linija 2: … Go. To Mesto_skoka String 1 = "pozdrav" Mesto_skoka: String 1 = “Veliki POZDRAV” … Exit : If Selection. Value > 10 Then Exit For If Selection. Value > 10 Then Exit Do If Selection. Value > 10 Then Exit Sub
6 n Nizovi Definisanje nizova Dim vector(2) As Double Dim A(10, 45) As Integer Dim SS(2, 3, 4) As String Izračunati sumu elemenata niza x koji ima 20 članova makro 014. xls Sabrati matrice A i B dimenzija 3 x 4 i rezultat smestiti u matricu C makro 015. avi makro 015. xls Pomnožiti matrice A(4 x 5) i B(5 x 4) i rezultat smestiti u matricu C(4 x 4)
Funkcije i procedure 7 n n VBA se sastoji isključivo iz procedura i funkcija. Predstavljaju ekvivalent potprograma u drugim programskim jezicima. Funkcije Function ime_funkcije(arg 1, arg 2, . . . ) As tip_podatka Operator 1 . . . Operator. N End Function
n Funkcija koja računa zbir dva broja: n Funkcija koja računa zbir tri broja koristeći prethodnu funkciju zbir 2: Function zbir 2(x, y) As Integer zbir 2 = x + y End Function zbir 3(x, y, z) As Integer zbir 3 = zbir 2(x, y) + z End Function Napisati funkciju koja računa sumu elemenata niza x(n) Function zbir(x, n) For i = 0 To n - 1 zbir = zbir + x(i) Next End Function makro 017. xls
Procedure Sub ime_procedure(arg 1, . . . , argn) Sub glavni_makro() operator 1. . operator. N End Sub . . Call ime_procedure (arg 1, . . . arg. N). . . End Sub Napisati program koji tri broja x, y i z uređuje u neopadajući poredak x<=y<=z. U glavnoj proceduri uključiti proceduru razmeni() kojom se razmenjuju vrednosti dve promenljive. makro 018. xls
8 Stringovi Dim p As String p=”Auto”+”matizacija” Rezultat je p=”Automatizacija” Funkcije za rad sa stringovima n Str(num) funkcija pretvara broj u string: s=Str(345) n s= ” 345” Instr. Rev(str 1, str 2) vraća poziciju od koje je string str 2 sadržan u stringu str 1. p =Instr. Rev(”Programiranje” , ”gram”) p=4 n Str. Reverse(str) kao rezultat vraća string u inverznom poretku. s = str. Reverse(”Pozdrav”) s = ”vardzo. P”
n Val(str) pretvara string u broj. p = Val("2457") n Len(str) Vraca 2457 vraća broj koji predstavlja dužinu stringa. p = Len("program") n Asc(str) vraća ASCII kod prvog slova u stringu. p = Asc("A") n p=7 p = 65 Mid(str 1, start, [d) vraća podstringa str 1 duzine d (opciono) počevši od pozicije start. s = Mid("program", 4, 4) s = “gram”
9 Ispitni zadaci Napisati glavnu proceduru i funkciju koja odredjuje predznak proizvoda članova niza bez mnozenja. makro 019. xls Napisati program za sortiranje niza realnih brojeva u rastućem poretku. Napisati posebnu proceduru koja obavlja sortiranje a zatim je pozvati iz druge procedure u kojoj se vrši učitavanje niza i ispisivanje rezultata makro 020. xls
- Slides: 47