Adjan AutoPro

Excel VBA-Userform (12 Public vs Private: Sub, Function, Module, Promenljive)

📝 U ovom videu radimo sa Public i Private! Ovo ćemo primeniti na sub, function, module i promenljivima. Radicemo sa dva primera.

Subprocedure (Sub)

Subprocedure, ili komandni makroi, su najčešći tip procedura i one obično sadrže komande koje predstavljaju ekvivalent opcijama menija i drugim programskim komandama. Važna osobina subprocedura je da, kao i obične programske komande, imaju uticaj na svoje okruženje. Na primer, subprocedure mogu menjati format ćelije. Subprocedure ne vraćaju nikakvu vrednost!
Format subprocedura je sledeći:

Sub ImeProcedure(argument1, argument2, ...)
   VBA naredbe
End Sub 

Subprocedure počinju rečju Sub i završavaju se sa End Sub. Ulazni argumenti subprocedure su razdvojeni zarezima. Prilikom davanja imena subproceduri moramo ispoštovati par jednostavnih konvencija. Naime, ime procedure ne može biti duže od 255 karaktera, prvi karakter mora biti slovo, a ostali karakteri mogu biti slova, cifre ili karakter podvlaka (_). U imenu procedure nisu dozvoljeni spejsovi i tačke! Na primer,

Dozvoljena imena subprocedura su: PromeniBoju, Para5, Debeli_lad

Dok su nedozvoljena imena: 5Para, Mirko&Slavko, Promeni boju

Što se tiče imena procedura, VBA nije case-sensitive, tj. ne pravi razliku između velikih i malih slova. Tako se imena PromeniBoju, Promeniboju i PROMENIBOJU odnose na istu proceduru.

Ispred ključne reči Sub u zaglavlju subprocedure se mogu naći i dodatne ključne reči koje određuju opseg subprocedure, tj. njenu vidljivost u odnosu na druge module u projektu. Tako se ispred Sub mogu naći reči Private ili Public.

Private označava da je procedura dostupna samo procedurama iz istog modula, dok Public označava da je procedura vidljiva svim procedurama iz svih ostalih modula projekta.

Nezavisno od Private i Public, ispred Sub se može naći i ključna reč Static koja označava da se promenljive u proceduri čuvaju i nakon završetka njenog izvršenja. Izvršavanje subprocedure se može forsirano prekinuti korišćenjem instrukcije Exit Sub koja se može naći bilo gde u subproceduri.

Funkcije (Function)

Drugi često korišćeni tip procedura su korisnički definisane funkcije, koje rade slično kao i ugrađene Excel-ove funkcije (na primer, SUM ili PRODUCT). Osnovna karakteristika im je da primaju argumente, odrade određenu operaciju sa njima i vrate rezultat. Iako mogu uticati na izgled okruženja, dobro definisana funkcija ne bi trebalo da utiče na svoje okruženje.
Sintaksa korisničkih funkcija je sledeća:

Function ImeFunkcije (argument1, argument2, ...) as Tip
   VBA naredbe
   ImeFunkcije = VracenaVrednost
End Function 

Funkcije se definišu u okviru modula.

Sintaksa funkcija je vrlo slična subprocedurama. Pravila za imenovanje funkcija su ista kao i zasubprocedure.

Osobenost ovih funkcija je da ime funkcije predstavlja izlaznu promenljivu. Ovo je ilustrovano linijom ImeFunkcije = VracenaVrednost. Tip izlazne promenljive se opciono može navesti u zaglavlju funkcije, nakon zagrade sa listom argumenata. O tipovima VBA promenljivih će biti reči kasnije.

Ispred ključne reči Function u zaglavlju funkcije se mogu naći reči Private ili Public.

Private označava da je funkcija dostupna samo procedurama iz istog modula, dok Public označava da je funkcija dostupna svim procedurama iz svih modula svih aktivnih Excel-ovih projekata.

Ispred Function se može naći i ključna reč Static koja označava da se promenljive deklarisane u funkciji čuvaju između poziva funkcija.

Slično kao kod subprocedura, izvršavanje funkcije se može prekinuti korišćenjem instrukcije Exit Function. U tom slučaju je potrebno voditi računa da je imenu funkcije, kao izlaznoj promenljivoj, dodeljena vrednost pre instrukcije Exit Function.

Lekcija 1: sub i function, zbir dva broja.

Userform (Lekcija1):

Private Sub btn_test_Click()
    btn_test.Caption = "Zbir dva broja"
    btn_test.BackColor = vbBlue
    btn_test.ForeColor = vbWhite

    Call zbir
End Sub


Sub zbir()
    MsgBox "Zbir je: " & ZbirDvaBroja(25, 5)
End Sub



Public Function ZbirDvaBroja(prviBroj As Integer, drugiBroj As Integer) As Integer
    ZbirDvaBroja = prviBroj + drugiBroj
End Function



Lekcija 2: public i private userform i module, Login forma

Userform (Lekcija2):

Private Sub btn_test_Click()
  
    btn_test.Caption = "LOG IN"
    btn_test.BackColor = vbBlack
    btn_test.ForeColor = vbWhite
       
    If (duzinaSlova(tb_user.Text) < 3) Then GoTo Greska
    
    
        Call proveriKorisnika
        
        If (isUserOK = True And isPassOK = True) Then
            MsgBox "Uspesno ste se prijavili!"
        Else
            MsgBox "Greska! Proverite username i password"
        End If
        
        
    
Greska:    Exit Sub
    
    

End Sub

Module (User_Pass_Module):

Public isUserOK As Boolean
Public isPassOK As Boolean


Public Sub proveriKorisnika()
    isUserOK = False
    isPassOK = False
    
    
    Call checkUser
    Call checkPass
End Sub


Private Sub checkUser()
    If (Lekcija2.tb_user.Text <> "") Then
         isUserOK = True
    End If
End Sub

Private Sub checkPass()
    If (Lekcija2.tb_pass.Text <> "") Then
        isPassOK = True
    End If
End Sub

Public Function duzinaSlova(myUser As String) As Integer
    duzinaSlova = Len(myUser)
End Function

Test: public i private userform i userform , zbir dva broja.

Private Sub UserForm_Click()
     MsgBox "Zbir je: " & Lekcija1.ZbirDvaBroja(100, 5)
End Sub

Excel dokument iz ovog videa možete preuzeti na linku ispod.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top