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 - Subprocedure i VBA u Excelu

SUBprocedure i VBA u Excelu

Search This Web Site

Adsense sponzor






SUB PROCEDURE u VBA

Sub-procedure (komandni Macro) su najčešći tip procedura koje se koriste u VBA programiranju za Excel.
Subprocedure ne vraćaju nikakvu vrijednost.
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.

Sintaxa:
-------------------------------
[Private | Public] [Static] Sub ImeProcedure([argument])
[naredbene linije]
[Exit Sub]
'neobavezno
[naredbene linije]
End Sub


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

 

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.

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

Primjer jedne subprocedure

Sub Kopiraj() 'naziv subprocedure "Kopiraj" bez argumenata

Range("A1:A4").Select
'selektiranje raspona celija u ovom slucaju A1:A4
Selection.Copy
'naredba za kopiranje selektiranog raspona
Range("E5").Select
'selektiranje raspona u koji cemo zalijepiti izrezano, selektirana prva celija E5
ActiveSheet.Paste
'lijepljenje kopiranog na aktivnom Sheetu

Application.CutCopyMode = False
'Clear Clipboard ili ocisti medjuspremnik

End Sub
'zavrsetak subprocedure

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

Primjer jedne subprocedure koja kao rezultat daje okvir sa porukom (MsgBox)

Sub PrikaziZbroj() 'naziv subprocedure "PrikaziZbroj" bez argumenata
Sum = 12 + 21
'Sum je nedeklarirana varijabla tipa VARIANT, matematicka operacija zbrajanja (mozemo staviti i oduzimanje, dijeljenje, mnozenje)
MsgBox "Odgovor je " & Sum
 'MsgBox znaci da ce se pojaviti okvir sa porukom i u njemu rezultat Sum pridruzen recenici
End Sub
'zavrsetak subprocedure

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

Primjer SUB procedure koja sadrži prefix Private i Public

Ovaj primjer je za subproceduru koja sadrži prefix Public. PUBLIC Subproceduru postavimo u VBE => Module1. Pozicioniramo se na bilo koji Sheet i pokrenemo proceduru sa Alt+F8 => Run. Rezultat ćemo vidjeti u ćeliji A1. (trenutni Datum i vrijeme). Dakle ova Subprocedura dostupna je iz bilo kojeg Sheeta

Public Sub ShowTime() 'naziv procedure sa prefixom Public
Range("A1") = Now()
'u celiji A1 prikazuje trenutni datum i trenutno vrijeme
End Sub
'zavrsetak subprocedure

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

Za razliku od prve Subprocedure ovo je druga Subprocedura koja sadrži prefix Private, ovu subproceduru ne možete pozvati preko Alt+F8 ili sa bilo kojeg Sheeta. Nju može pozvati druga procedura koja se nalazi u istom modulu.

Private Sub ShowTime() 'naziv privatne subprocedure koju može pozvati samo druga procedura iz istog modula
Range("A1") = Now()
'u celiji A1 prikazuje trenutni datum i trenutno vrijeme
End Sub
'zavrsetak subprocedure

Primjer Subprocedure kada poziva drugu Subproceduru

Subprocedura poziva drugu subproceduru u različitim Modulima

U ovom primjeru pokazat ću kako jedna Subprocedura poziva drugu Subproceduru. U ovom slučaju ove dvije Subprocedure nisu smještene u isti Module. Prva Subprocedura "SnimiKao" smještena je u Module1 a druga Subprocedura smještena je na Sheet1. Pokretanjem Druge Subprocedure izvršava se prva Subprocedura.
Dakle pozicioniramo se na Sheet1 i Alt+F8 => Poziv => RUN

Adsense sponzor




Prva subprocedura smještena u Module1

Sub Snimi_Kao() ' macro za snimanje racuna u PDF pomocu Microsoftovog ugradjenog alata za Office 2007

Dim txtIme As String
'deklarirana varijabla "txtIme" kao String

txtIme = "C:\Temp\" & "faktura" & Range("E3")
'ime nove datoteke, faktura+broj iz celije E3 na sheetu na kojem smo pozicionirani tj. odakle pozivamo proceduru, a mi je pozivamo iz Sheet1
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=txtIme, _
OpenAfterPublish:=False

End Sub
'zavrsetak procedure

Druga subprocedura smještena u Sheet1 koji želimo snimiti u PDF formatu

Sub Poziv() 'naziv procedure
Call Snimi_Kao 'poziva proceduru "SnimiKao"iz Module1
End Sub
'zavrsetak procedure

Ako koristimo Excel 2007 u njemu imamo ugrađen alat za snimanje u PDF formatu iz Excela. Nakon pokretanja Macroa "Poziv" i izvršavanja Macroa "SnimiKao" u folderu C:\Temp imat ćemo datoteku pod nazivom "fakturaX.pdf". Ovaj X je broj koji se nalazi u ćeliji E3

NAPOMENA: Ako samo jedna od Subprocedura ima prefix Private, tada se obje procedure moraju nalaziti u istom Modulu.

Private Subprocedura poziva Subproceduru u istom Modulu

Adsense sponzor




Adsense sponzor



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