zxz 04.08.2013 23:53
Predmet:Re: Skola Vb-a za napredne

----------------------------------------P O C E T A K--------------------------------------------

PROCEDURE:
Kao sto smo prosli puta naveli svaka procedura se sastoji od:
-zaglavlja procedure
-tijela procedure (Koda)
-Podnozja procedure.

Tip procedure moze biti:
-Sub
-Function (Funkcija)

Svaka od ovih procedura moze biti:
-Private
-Public
-Static
Ova prva dva tipa procedure odredjuju u stvari doseg procedure.
Doseg procedure odredjuje njeno djelovanje (Dostupnost)
Private procedura ima dostupnost samo u objektu u kome je napisana.
Ako smo je napisali u okviru neke forme ona ce nam biti dostupna odnosno mozemo je pozivati samo u okviru modula od te forme ili ako je u nekom samostalnom modulu isto tako je mozemo pozivati samo u okviru toga modula.
Public procedura ima doseg na nivou nase aplikacije sto znaci da je mozemo pozivati sa bilo kojeg mjesta u aplikaciji.
Static procedure ce biti stticne odnosno vrijednosti ce se u njima zadrzati i poslije izvrsenja procedure.

zxz 05.08.2013 00:15
Predmet:Re: Skola Vb-a za napredne

Opsti oblik procedure:
Vrsta Tip ImeProcedure(argument1, argument2, ...)
VBA naredbene linije koda
end tip

Vrsta procedure moze biti:
Private
Public
Static
Vrstu procedure mozemo i izostaviti.
Ukoliko izostavimo

tip procedure moze biti:
Sub
Function.
Vrast procedure moze biti:
Public
Private
Static

Ime procedure:
Ime proceure se mora sastojati iz jedne rijeci odnosno ne smije imati prezno mjesto u imenu procedure.
Nesmije biti ni prvi znak broj u imenu procedure.
Takodje nesmijemo koristiti nazive koji vec imaju gotove procedure(naredbe)
Ukoliko zelimo da imamo dvije rijesi onda ih mozemo spojiti donjom crtom:
Primjer:
Moja_Procedura
Preporuka:
Za nazive procedure koristite samo engleske znakove i donju crtu.
Ne preporucujem nasa slova kao niti opertaore u nativima procedura.

Argumenti procedure:
Sto se tice naziva argumenata isto vazi kao i za nazive procedura.
Argumente je pozeljno i definisati odnosno odrediti tip variable za koju ce se koristiti.
Primjer:
MojArg1 as Integer,MojArg2 as string,MojArg3 as Boolean
Ukoliko ispred argumenta dodamo Optional tada je taj argument neobavaeza pri pozivu procedure.
Primjer:
Optiona ImeArgumenta as tipArgumenta
Broj argumenata u nekoj proceduri nije ogranicen.

zxz 05.08.2013 00:24
Predmet:Sub Procedure

Sub Procedure
Sub-procedure su najčešći tip procedura koje se koriste.
Subprocedure ne vraćaju nikakvu vrijednost u imenu procedure.
Sub procedure počinju sa SUB i završavaju sa END SUB, argumenti su odvojeni zarezom.
Jedna Subprocedura može pozvati drugu Subproceduru.
U koliko nijedna od njih nisu Private tada se mogu nalaziti u različitim Modulima.
U koliko je jedna od njih postavljena kao "Private" tada se obje moraju nalaziti u istom Modulu Workbook.
U zagradama iza ImenaProcedure postavljaju se argumenti odvajani zarezom.

Sub ImeProcedure(argument1, argument2, ...)
VBA naredbene linije koda
End Sub


Pored ovoga ispred naziva procedure mozemo dodati i izraz Static.
Ukoliko dodamo izraz static vrijednosti variabli ce biti stticne odnosno vrijednosti ce se u njima zadrzati i poslije izvrsenja procedure.

zxz 05.08.2013 09:22
Predmet:Funkcije

Funkcija moze a i nemora imati ulazne argumente. Broj ulazniha ragumenata nije ogranicen.
Ulazni argumenti (Parametri) su oiviceni malom zagradom.
Svaki ulazni argument može biti dimenzionisan. a aukoliko ga ne dimenzionisemo on ce biti tipa variant.
U funkciji izlazni argument je samo ime funkcije
Mozemo dimenzionisati i izlazni argument i to nako zatvaranje male zagrade odnosno ispisa ulaznih argumenata.
Ukoliko ga ne dimenzionisemo bit ce tipa variant.
Dimenzionisanje izlaznog argumenta nije obavezno.
Primjer:
Function ImeProcedure(argument1 as Integer, argument2 as string, ...) as String
VBA naredbene linije koda
End Function

Ispred ulaznog argumenta mozemo dodati 'Optional'. Ukoliko navedemo da je argument optional onda pri pozivu te preocedure nije obavezan unos podatka za ovaj argument
Function PrimjerOptional(argument1 as Integer, Optional argument2 as string, ...) as String
VBA naredbene linije koda
End Function

Ovu proceduru mozemo pozvati ovako:
call PrimjerOptional(2)
ili ovako:
call PrimjerOptional(2,"nekistring")

Ukoliko kao ulazne parametre postavljamo druge variable onda one moraju biti istok tipa ka i sto je argument u ulaznom parametru.
Primjer:
Dim a as integer
a=2
call PrimjerOptional(a,"nekistring")

Ukolilo ova variabla nije istoga tipa onda u proceduri moramo ispred naziva ragumenta napisati 'Byval'.
Primjer:
Function PrimjerOptional(byVal argument1 as Integer, Optional argument2 as string, ...) as String
VBA naredbene linije koda
End Function

sada mozemo imati i ulaznu variablu drugoga tipa.
Dim a as single
a=2
call PrimjerOptional(a,"nekistring")

zxz 05.08.2013 14:55
Predmet:Varijable ili Promjenjive

VARIABLE u prijevodu znači nešto varijabilno ili promjenjivo. Kao i svi programski jezici tako i VBA koristi Variable u svom kodu. Za razliku od nekih programskih jezika, u VBA ne morate explicitno deklarirati varijablu prije nego je upotrijebite iako je to poželjno.
Ukoliko želite explicitno deklarisati variable onda na vrhu modula upisite:
Option Explicit
VBA sadrži veliki broj tipova Varijabli.
Varijable se koriste za pohranu privremenih podataka koji se upotrebljavaju u izvršavanju neke procedure.
Postoje i neka pravila u radu sa Variablama:
- Naziv (Ime) Variable mora početi "slovom" a ne brojem. Broj može biti sastavni dio Variable ali ne na početku. Kao i kod procedura
- Naziv (Ime) Variable ne smije biti duže od 255 znakova
- Naziv (Ime) Variable ne smije biti istog naziva kao i nazivi naredbi odnosno gotovih procedura
- Naziv (Ime) Variable mora biti kontinuirani niz znakova bez prekida. Ako želite istaknuti neke dijelove to možete pomoću velikih početnih slova (npr: MojaVar, Moj_Popis)
Poželjno je da Varijable imenujete nekim smislenim imenom (nazivom) da bi ste mogli lako na prvi pogled uočiti o čemu se radi u dotičnom VBA kodu.(ovo je važno kod eventualno naknadnih promjena).
Na internetu ćete naći VBA kodova koji kao Variablu koriste samo "jedno slovo". Ovo nije dobra praksa i treba je izbjegavati.
Nakon izvjesnog vremena i vi sami cete zaboraviti cemu vam sluzi ta variabla a mozete misliti kako je nekome drugome ko zeli iscitati vas kod.
Broj Variabli nije ogranicen u jednoj proceduri ali se netreba rasipati jer samim time trosite memoriju i vasa app. ce sporije raditi.

zxz 05.08.2013 14:58
Predmet:Re: Skola Vb-a za napredne

E sad to bi bilo uopsteno sto bi trebali znati prije no sto pocnemo sa pisanjem samih procedura.
Jos bih vas zamolio da procitate i ovu temu:
http://www.icentar.ba/print.php?id=1149&page=1
Te u slucaju nekih nejasnoca da slobodno postavite pitanje.
Tek kada ovo teoretski razjasnimo onda idemo dalje.

pmiroslav 05.08.2013 15:34
Predmet:Re: Skola Vb-a za napredne

Dali Sub procedure koristimo samo unutar Formi i Reporta da odrade neki zadatak ili ih se može koristiti i na neki drugi način?

zxz 05.08.2013 15:53
Predmet:Re: Skola Vb-a za napredne

Sub Procedure se koriste svuda ne samo na formama.
Na formama moraju biti private sub zbog automatkog kreiranja.
primjer:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Privatna mora biti jer pod istim nazivom mozemo je imati i na drugoj formi.
Sub mora biti jer vraca podatke koji je taster pritisnut i polozaj misa.

Isto tako pravimo mi neku proceduru kao funkciju ukaze se potreba da napravimo neku sub proceduru koja ce obradivati neki odredjeni sklop podataka i vracati vise rezultata.
Sub procedura vraca vrijednosti kroz ulazne parametre odnosno ulazne variable.
Ti cesto koristis pretragu iz solution koja je kreirana sa jednom procedurom i jednom sub procedurom.

zxz 05.08.2013 18:47
Predmet:Re: Skola Vb-a za napredne

Molio bih one koji prate ovu temu da na vrhu teme topic Option odaberu instant obavijest tako da dobijaju stalna obavjestenja te samim tim prate temui budu aktivni.

dex 05.08.2013 18:56
Predmet:Re: Skola Vb-a za napredne

Hteo bih jos da dodam da Access od logickih operacija prepoznaje jos i ekvivalenciju obelezava se sa Eqv

aba Eqv b
FalseFalseTrue
FalseTrueFalse
TrueFalseFalse
TrueTrueTrue

kao i implikaciju obelezava se sa Imp

aba Imp b
FalseFalseTrue
FalseTrueTrue
TrueFalseFalse
TrueTrueTrue