IZBORNIK HOME FORUM ACCESS EXCEL WORD  
 

HOME

   

2

Procedure

2.1 Procedure u VBA
2.2 Greške u VBA
2.3 SUBprocedure
2.4 Function
2.5 Varijable u VBA
2.6 Deklariranje varijabli
2.7 Raspon varijabli
2.8 Operatori u VBA
2.9 Matematičke funkcije u VBA
   
   
 

MICROSOFT EXCEL 2003 - VBE i VBA - Function procedure i VBA u Excelu

FUNCTION procedure i VBA u Excelu

Search This Web Site

Adsense sponzor






FUNCTION PROCEDURE u VBA

FUNCTION procedure (komandni Macro) su drugi najčešći tip procedura koje se koriste u VBA programiranju za Excel i ove procedure se definiraju u Modulu.

Function procedura vraća Vrijednost ili niz (array). Ove VBA funkcije također mogu biti izvršene (pozvane) od strane drugih procedura. Function procedure počinju sa FUNCTION i završavaju sa END FUNCTION, argumenti su odvojeni zarezom.
U zagradama iza ImenaProcedure postavljaju se argumenti odvajani zarezom.

Function procedure se uglavnom pozivaju od strane drugih procedura i ne rade samostalno. One služe samo za to da bi dale nekakav rezultat. Ako napišete samo Macro za Function proceduru, pritiskom na Alt+F8 nećete ništa vidjeti, jer sami ne možete pokrenuti Function proceduru. Nju pokreće druga Subprocedura. Ako neku od Function procedura postavite kao Private, tada procedura koja ju poziva mora biti u istom Modulu. Ako nisu nijedna Private tada ne moraju biti u istom Modulu već se mogu nalaziti u dva različita Modula.

Sintaxa:
-------------------------------
[Private | Public] [Static] Function ImeProcedure([argument])
[naredbene linije]
[FunctionName = Value]
[Exit Function]
'neobavezno
End Function


-------------------------------
Function ImeProcedure(argument1, argument2, ...) Type out variables
VBA naredbene linije koda
ImeFunkcije = VracenaVrijednost
End Function

 

Svojstvo Function procedure je to što ona predstavlja izlaznu varijablu (promjenjivu). Ovo možete uočiti u dijelu naredbene linije koda ImeFunkcije = VracenaVrijednost. Tip izlazne varijable (promjenjive) može se navesti u naslovnom dijelu Functions nakon zagrade sa popisom argumenata. O tome kasnije.

Ispred Function može se naći i ključna riječ Static koja označava da se varijable koje su deklarirane u funkciji čuvaju između poziva funkcija. Slično kao kod subprocedura, izvršavanje funkcije se može prekinuti korištenjem instrukcije Exit Function. U tom slučaju je potrebno voditi računa da je imenu funkcije, kao izlaznoj varijabli, dodijeljena vrijednost prije naredbe Exit Function.

Ispred naziva tj. imena procedure može se nalaziti ključna riječ koja označava vrstu procedure tj. njen raspon koji je ključan za njenu vidljivost u odnosu na druge module u Workbook.

Private (Privatno)- (neobavezno) označava da je procedura dostupna samo procedurama u istom modulu.
Public
(Javna)- (neobavezno) označava da je procedura dostupna svakoj drugoj u bilo kojem modulu svih aktivnih Workbook i nju se može pozvati.
Static
(Statična)- (neobavezno) pokazuje da su u proceduri varijable sačuvane kada postupak završi.

Function (obavezno)- označava početak procedure.
Naredbene linije koda (po izboru)- predstavlja VBA kod.
Exit Function (neobavezno)- izjava (naredba) za neposredan izlaz iz procedure. (Izvršavanje procedure može se prekinuti ovom naredbom)
End Function (obavezno)- označava kraj procedure.

Primjer kada se Function i Subprocedura moraju nalaziti u istom Modulu.
(Zato što je Function Private)

Subprocedura poziva Private Function proceduru u istom Modulu

Primjer kada se Function i Subprocedura ne moraju nalaziti u istom Modulu
(nijedna nije Private)

Subprocedura poziva Function proceduru u različitim Modulima

Primjeri Function procedure koju poziva Subprocedura

Kako zbrojiti neke brojeve pomoću Function i Sub procedura

Primjer dvije procedure (Function procedure i Sub procedure) koje su zavisne. Zašto? Zato što su u prvoj Function proceduri definiramo nekakvu izlaznu varijablu a u Subproceduri definiramo neke vrijednosti (brojevi x=12 i y=21). => sumNo(12,  21) koje će subprocedura zbrojiti u odnosu na definiranu matematičku operaciju u Function proceduri

U prvoj Function proceduri, "sumNo" je nedeklarirana varijabla (promjenjiva) i subprocedura pozivajući "sumNo" sa definiranim brojevnim vrijednostima koji zamjenjuju X i Y vrši matematičku operaciju zbrajanja i prikazuje u okviru za poruke (MsgBox)

Dakle "sumNo" je isto što i "x+y" (12+21), naravno ovi brojevi mogu biti i druge vrijednosti. Ove dvije procedure potrebno je kopirati u Module neke Workbook. Mogu se postaviti i u različite Module jer nijedna nisu "Private". U slučaju kada bi postavili prvu proceduru kao "Private Function sumNo()" tada bi obje procedure morale biti u istom Modulu.
Pritiskom na Alt+F8 => ShowSum => RUN, koji pokretanjem otvara okvir poruke sa rezultatom 33.

Function sumNo(x, y) 'naziv function procedure "sumNo" sa argumentima x i y
sumNo = x + y 'postavljanje nedeklarirane "sumNo" varijable sa matematičkom operacijom zbrajanja
End Function 'zavrsetak function procedure

Sub ShowSum() 'naziv subprocedure "ShowSum" bez argumenata
MsgBox sumNo(12, 21) 'postavljanje okvira za poruku i pozivanje nedeklarirane "sumNo" varijable
End Sub 'zavrsetak subprocedure

-------------------------------------------

Kako izračunati popust pomoću Function i Sub procedura

Ove procedure postavljaju se u Modul neke Workbook. Mogu se postaviti i u različite Module jer nijedna nisu "Private".

Primjer dvije zavisne procedure po sistemu Subprocedura poziva Function proceduru. Ove dvije procedure računaju popust u odnosu na vrijednost u ćeliji A1. Rezultat će se pojaviti u ćeliji u kojoj postavimo slijedeću formulu =Snizenje(A1) npr: u ćeliju C1

U Macro kodu ispod uočite prvu Function proceduru koja definira NEDEKLARIRANU varijablu "Snizenje" tj. adekvatna je umnošku Cijene iz ćelije A1 i vrijednosti koja je ovdje postavljena "0,5" što znači 50% popusta.

Subprocedura "Popust" poziva Function proceduru a veže se na nedeklariranu varijablu Snizenje(inputCijena) tako da kao rezultat u ćeliji C1 imamo 50% umanjenu vrijednost iz ćelije A1.

Ako uklonimo drugu liniju koda u Subproceduri i umjesto "inputCijena" upišemo broj 500, pojavit će nam se okvir sa rezultatom koji je za 50% manji od upisanog broja (dakle 250). Download primjera


 

Adsense sponzor




Function Snizenje(Cijena As Currency) As Currency 'naziv function procedure "Snizenje" sa argumentima Cijena kao novcana vrijednost
Snizenje = Cijena * 0.5
'postavljanje nedeklarirane "Snizenje" varijable sa matematičkom operacijom mnozenja
End Function
'zavrsetak function procedure

Sub Popust() 'naziv subprocedure "Popust" bez argumenata
inputCijena = InputBox("Upisi cijenu: ")
MsgBox "Nova cijena: " & Snizenje(inputCijena)
'ovaj dio vezan je uz formulu =Snizenje(A1)
End Sub
'zavrsetak subprocedure

-------------------------------

Kako izračunati kvadrat razlike dva broja

Ova Function procedura je samostalna i nju ne poziva druga procedura.

Function KvadratRazlikeDvaBroja(X As Double, Y As Double) As Double
Dim Z As Double
'deklariranje varijable Z kao 8-bajtni tip podataka
Z = (X - Y) ^ 2
'Z varijabla jednaka je ekvivalentu matematičke operacije
KvadratRazlikeDvaBroja = Z
End Function
'zavrsetak function procedure

Ako želite pogledajte VBA Function by Category

Adsense sponzor




Adsense sponzor



Ova web stranica koristi COOKIES - COPYRIGHT - 2011-2017 - IvanC - ic.ims.hr