Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi...

16
V i s oka po slovno -tehni č ka ško l aU ž ice 201 2 / 13 4/8/2013 Visa Poslovno Tehnička Škola - Užice VBA moduli mr Milovan Milivojević dipl. ing.

Transcript of Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi...

Page 1: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice

VBA – moduli

mr Milovan Milivojević dipl. ing.

Page 2: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 2

Moduli (modules) – ponašanje modula

Option Explicit

Option Private Module

Option Compare {Binary |Text |Database}

Option Base {0|1} Primena: Naredbe uneti na početku modulaPrimer: Ako želimo da modul ima ekplicitno

deklarisanje promeljivih i da je Privatni

Option ExplicitOption Private Module

Sub Primer XXXX()' ...' Program statements

End Sub

Option ExplicitOption Private Module

Sub Primer XXXX()' ...' Program statements

End Sub

Ponašanje modula može se prilagoditi na 4 načina:

Page 3: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 3

Moduli (modules) – ponašanje modula

Ako se upotrebi Option Explicit svaka upotrebljena promenljiva mora biti deklarisana, inače će sepojaviti 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 seunese pogrešno ime promenljive. Ako je Option Explicit isključeno računar će prihvatiti promeljivu ali ćenjena vrednost verovatno biti pogrešna

Automatsko uključivanje u svakom modulu

Tools Options Require variable Declaration

Option Explicit

Ova opcija označava modul kao PRIVATNI tako da programski kod u njemu korisnici neće moćivideti 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 ovogmodula pod uslovom da te procedure nisu pojedinačno deklarisane kao PRIVATE (privatne)

Option Private Module

Page 4: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 4

Moduli (modules) – ponašanje modula

Option Compare {Binary |Text |Database}

Ova programska naredba na početku modula definiše metod poređenjastringova (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 definisanjeprvog indeksnog broja u matrici (ARRAY)

Ako opcija nije definisana podrazumevanavrednost je 0

a(0), a(1), a(2)...

Page 5: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice

mr Milovan Milivojević dipl. ing.

Subroutine

FunctionVariables

VBA – potprogrami, funkcije, promenljive

Page 6: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 6

Pro

ced

ure

,dis

kre

tne

sekcije

pro

gra

mskog

koda

Gradivni blokovi VBA

Pro

ject

MODULE 1

Subroutine 1

Function 1

Subroutine 2

MODULE 2

Subroutine 3

Function 2

Function 3

MODULE n

Subroutine n

MODULE

Subroutine

Function

Page 7: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 7

Procedure:

SUBROUTINES

FUNCTION

Procedure

Subroutine

Function

Procedure predstavljaju kolekcije izjava (statements)(programskih naredbi), koje izvršavaju jedan ili višezadataka.

Postoje dve osnovne klase procedura

Subroutines

Functions

Osnovna razlika:

o Funkcije mogu vratiti vrednost procesu koji ih jepozvao

o Potprogrami ne moraju eksplicitno vraćatinikakvu vrednost procesu koji ih je pozvao

Page 8: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 8

VBA - Subroutine

Predstavljaju najmanji elemenatprograma koji može biti izvršen(executed)

Generalni izgled:

Sub Primer()

[Program statements]

End Sub

Subroutine: Primer

[ Private | Public | Friend ] [Static] Sub SubName ( (parameters) )[statements]

……

End Sub

Može bitiISKLJUČIVOizvršen odstrane drugihpotprograma ilifunkcija IZISTOG modula

Može biti pozvanod strane BILOKOG drugogpotprograma,funkcije iliklasnog modula.Podrazumevanavrednost za svepotprograme jePUBLIC

Statičkipotprogramipamte vrednostisvojih lokalnihpromenljivih svedo trenuka kaasledeći put budupozvani

Primenjuje sesamo zaklasnemodule

Može se deklarisati jedan ili višeparametara.

Parametri (argumenti) su fiktivni.

Svaka procedura (potprogram ilifunkcija) koja poziva potprogramsa fiktivnim parametrima mora muisporučiti odgovarajuće stvarneparametre (argumente).

Subroutine: Pozivanje

Page 9: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 9

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

Page 10: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 10

Prikaz informacija krajnjemkorisniku

Prikupljanje ulaznih podataka tipaYes / No / Cancel

Prikazivanje trenutnih vrednostipromenljivih i analizaprogramskog koda

Primena:

MsgBox ( prompt [, buttons [, title] [, helpfile, context] )

Tekst koji sepredstavljana ekranu

Parametar

buttons definiše

koja će dugmad bitiprikazana poredteksta poruke.Ukoliko se ne unese

, podrazumeva se 0tj. biće prikazano

dugme OK

titleTekst unaslovnoj linijiprozora. Akose ne definišeonda sepodrazumevaMicrosoftExcel

Sub DobroJutro()

MsgBox “Probudite se!!! "

End Sub

A) B)Primer:

Odgovor korisnika

Page 11: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 11

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

Page 12: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 12

Poziv Suboutine

PrimerPOZIVANJA

POTPROGRAMA

Pozivanje potprograma:

A) Jednostavnim navođenjem naziva odgovarajućegpotprograma na željenoj lokaciji unutar pozivajućegpotprograma.

B ) Upotreba izjave Call ime potprograma

Pozivanje potprograma sa parametrima:

Call ime potprograma X,Y,Z

ili

Ime potprograma X,Y,Z

Page 13: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 13

Function

[ Private | Public | Friend ] [ Static ] Function FunctionName ( (parameters) ) [As Type][statements]……FunctionName=FunctionResult

End Function

U odnosu na Subroutine UVEK omogućujupovratak određene vredosti ka proceduri izkoje je funkcija pozvana.

Mogu se definisati Korisničke funkcije(User – defined) koje se potom mogukoristiti iz Excel-a kao i sve poznate funkcije

Functions

Preporučuje se deklarisanjeTIPA podataka koji će bitidodeljen IZLAZNOJvrednosti funkcije

Page 14: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 14

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 funkcijemogu se koristiti iz Excel-akao i sve druge funkcije nasledeći načine:

1. Jednostavnim navođenjemimena funkcije (primer:

• Pozicioniranje u ćeliju

• =juce()

2. Preko menija

Insert →Function →UserDefined → Izbor funkcije→ OK

Page 15: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

4/8/2013Visa Poslovno Tehnička Škola - Užice 15

Poziv Potprograma iFunkcija:PRIMERI

Visoka poslovno-tehničk

a škola

Užice 2012/13

Page 16: Uvod u objektno programiranje M. Milivojevic u objektno... · g r a m o g k o d a Gradivni blokovi VBA P r o j e c t MODULE 1 … Subroutine 1 Function 1 Subroutine 2 MODULE 2 Subroutine

Visoka poslovno-tehničk

a škola

Užice 2012/13

4/8/2013Visa Poslovno Tehnička Škola - Užice 16

VARIABLES

Program se sastoji od:

• Promenljivih- variables

• Programskih redova (statements-izjava)

• operatora

PROMENLJIVE su stavke ili objekti kojeprogramski kod obrađuje

Primeri promenljivih :

• Broj – nad kojim se realizuje neka matematičkaoperacija

• Tekstualni string – koji se može editovati

• Radni list

• Blok ćelija

• Radna knjiga

• Bilo koji objekat Excel-a ...

Rad sa Promenljivim :

• Kreiranje varijable ododgovarajućeg podatkam ili tipaobjekata

• Inicijalizacija –dodela početnihvrednosti

• Primena određene operacije iliizjave (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