VBA moduli mr Milovan Milivojević dipl. ing. Visa Poslovno Tehnička Škola - Užice
Moduli (modules) ponašanje modula Ponašanje modula može se prilagoditi na 4 načina: Option Explicit Option Private Module Option Compare {Binary Text Database} Option Base {0 1} Primena: Naredbe uneti na početku modula Primer: Ako želimo da modul ima ekplicitno deklarisanje promeljivih i da je Privatni Option OptionExplicit Option OptionPrivate PrivateModule Sub SubPrimer PrimerXXXX() ' '...... ' ' Program Program statements statements End EndSub Visa Poslovno Tehnička Škola - Užice 2
Moduli (modules) ponašanje modula Option Explicit Ako se upotrebi Option Explicit svaka upotrebljena promenljiva mora biti deklarisana, inače će se pojaviti greška u sintaksi i program neće moći biti kompajliran Preporučuje se upotreba ove opcije jer se izbegavaju suptilne greške u programu. Na primer kada se unese pogrešno ime promenljive. Ako je Option Explicit isključeno računar će prihvatiti promeljivu ali će njena vrednost verovatno biti pogrešna Automatsko uključivanje u svakom modulu Tools Options Require variable Declaration Option Private Module Ova opcija označava modul kao PRIVATNI tako da programski kod u njemu korisnici neće moći videti pomoću dijaloga Macros iz Excel-a Tools Macro Macros Sprečava se mogućnost da se sadržaj modula poziva iz drugog PROJEKTA Ostali Moduli iz istog PROJEKTA mogu pozivati Potprograme i Funkcije (procedure) iz ovog modula pod uslovom da te procedure nisu pojedinačno deklarisane kao PRIVATE (privatne) Visa Poslovno Tehnička Škola - Užice 3
Moduli (modules) ponašanje modula Option Compare {Binary Text Database} Ova programska naredba na početku modula definiše metod poređenja stringova (Binary, Text or Database) u datom modulu. Podrazumevani metod je Binarni kod koga je AAA < aaa Kod Text poređenja je AAA = aaa Option Base {0 1} Ova programska naredba služi za definisanje prvog indeksnog broja u matrici (ARRAY) Ako opcija nije definisana podrazumevana vrednost je 0 a(0), a(1), a(2)... Visa Poslovno Tehnička Škola - Užice 4
Subroutine Function Variables VBA potprogrami, funkcije, promenljive mr Milovan Milivojević dipl. ing. Visa Poslovno Tehnička Škola - Užice
Gradivni blokovi VBA MODULE 1 Project Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine 3 Function 2 Function 3 Procedure, diskretne sekcije programskog koda MODULE n Subroutine n MODULE Subroutine Function Visa Poslovno Tehnička Škola - Užice 6
Procedure Procedure predstavljaju kolekcije izjava (statements) (programskih naredbi), koje izvršavaju jedan ili više zadataka. Postoje dve osnovne klase procedura Subroutines Functions Osnovna razlika: o Funkcije mogu vratiti vrednost procesu koji ih je pozvao o Potprogrami ne moraju eksplicitno vraćati nikakvu vrednost procesu koji ih je pozvao Procedure: SUBROUTINES Subroutine FUNCTION Function Visa Poslovno Tehnička Škola - Užice 7
Može biti ISKLJUČIVO izvršen od strane drugih potprograma ili funkcija IZ ISTOG modula Subroutine: Primer Subroutine: Pozivanje VBA - Subroutine Predstavljaju najmanji elemenat programa koji može biti izvršen (executed) Generalni izgled: Sub Primer() [Program statements] End Sub [ Private Public Friend ] [Static] Sub SubName ( (parameters) ) [statements] End Sub Može biti pozvan od strane BILO KOG drugog potprograma, funkcije ili klasnog modula. Podrazumevana vrednost za sve potprograme je PUBLIC Statički potprogrami pamte vrednosti svojih lokalnih promenljivih sve do trenuka kaa sledeći put budu pozvani Primenjuje se samo za klasne module Može se deklarisati jedan ili više parametara. Parametri (argumenti) su fiktivni. Svaka procedura (potprogram ili funkcija) koja poziva potprogram sa fiktivnim parametrima mora mu isporučiti odgovarajuće stvarne parametre (argumente). Visa Poslovno Tehnička Škola - Užice 8
Primer Suboutine Sub PrvenacLorka() MsgBox "Povedoh je ja do reke misleci da devojka je...al' udata ona bese" End Sub Postupak: Alt +F11 Insert Module uneti kod pokrenuti potprogram - F5 ili Run ili Funkcija MsgBox Visa Poslovno Tehnička Škola - Užice 9
Tekst koji se predstavlja na ekranu Parametar buttons definiše koja će dugmad biti prikazana pored teksta poruke. Ukoliko se ne unese, podrazumeva se 0 tj. biće prikazano dugme OK Primena: Prikaz informacija krajnjem korisniku Prikupljanje ulaznih podataka tipa Yes / No / Cancel Prikazivanje trenutnih vrednosti promenljivih i analiza programskog koda MsgBox ( prompt [, buttons [, title] [, helpfile, context] ) A) B) Sub DobroJutro() MsgBox Probudite se!!! " End Sub title Tekst u naslovnoj liniji prozora. Ako se ne definiše onda se podrazumeva Microsoft Excel Primer: Odgovor korisnika Visa Poslovno Tehnička Škola - Užice 10
Option Explicit Sub OdgovorKorisnika() 'Deklarisanje promeljive Dim Odgovor As Variant Dim Poruka As String 'Primer funkcije MsgBox Odgovor = MsgBox("Muzika je otkrovenje vece od svake mudrosti i filozofije - rekao je Betoven?" _, vbyesno, "PROMETEJ") If Odgovor = vbyes Then Poruka = MsgBox("Muzika za Elizu...", vbinformation, "Prometej") Else Poruka = MsgBox("Izgleda da vise volite Mocarta.", vbexclamation, "Prometej") End If End Sub Visa Poslovno Tehnička Škola - Užice 11
Poziv Suboutine Pozivanje potprograma: A) Jednostavnim navođenjem naziva odgovarajućeg potprograma na željenoj lokaciji unutar pozivajućeg potprograma. B ) Upotreba izjave Call ime potprograma Pozivanje potprograma sa parametrima: Call ime potprograma X,Y,Z ili Primer POZIVANJA POTPROGRAMA Ime potprograma X,Y,Z Visa Poslovno Tehnička Škola - Užice 12
Function Functions U odnosu na Subroutine UVEK omogućuju povratak određene vredosti ka proceduri iz koje je funkcija pozvana. Mogu se definisati Korisničke funkcije (User defined) koje se potom mogu koristiti iz Excel-a kao i sve poznate funkcije [ Private Public Friend ] [ Static ] Function FunctionName ( (parameters) ) [As Type] [statements] FunctionName=FunctionResult End Function Preporučuje se deklarisanje TIPA podataka koji će biti dodeljen IZLAZNOJ vrednosti funkcije Visa Poslovno Tehnička Škola - Užice 13
Function Function : Primeri Function Juce() As Date Juce = Now() - 1 End Function Function PDV(x) As Double PDV = x * 0.20 End Function Korisnički definisane funkcije mogu se koristiti iz Excel-a kao i sve druge funkcije na sledeći načine: 1. Jednostavnim navođenjem imena funkcije (primer: Pozicioniranje u ćeliju =juce() 2. Preko menija Insert Function User Defined Izbor funkcije OK Visa Poslovno Tehnička Škola - Užice 14
Poziv Potprograma i Funkcija: PRIMERI Visa Poslovno Tehnička Škola - Užice 15
VARIABLES Program se sastoji od: Promenljivih- variables Programskih redova (statements-izjava) operatora PROMENLJIVE su stavke ili objekti koje programski kod obrađuje Primeri promenljivih : Broj nad kojim se realizuje neka matematička operacija Tekstualni string koji se može editovati Radni list Blok ćelija Radna knjiga Bilo koji objekat Excel-a... Rad sa Promenljivim : Kreiranje varijable od odgovarajućeg podatkam ili tipa objekata Inicijalizacija dodela početnih vrednosti Primena određene operacije ili izjave (naredbe) nad varijablom Pojmovi značajni za Varijable Deklarisanje Tipovi podataka Oblast važenja (SCOPE) Životni vek (LifeTime) Razvoj konceptualnog modela promenljivih PRVI OZBILJNI ZADATAK u programiranju PRIMERI Visa Poslovno Tehnička Škola - Užice 16