Visual Basic for Applications
uređuje Dragan Grbić

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

VBA: ima još...
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Sakrivanje makroa

Nivo:  NIVO 2 - klinite za objašnjenje


Ako koristite VBA makroe, verovatno ste se navikli na klasični dijalog za pokretanje makroa koji dobijate prečicom Alt+F8. No, s obzirom na to da mnogi programeri vole da programiraju modularno, lako može da se desi da okno sa spiskom makroa postane zagušeno, pa tada u prvi čas ne znate koji makro da odaberete za pokretanje.

Ova pojava je naročito izražena u Wordu, gde glavni predložak Normal.DOT predstavlja uobičajeno mesto za čuvanje svih makroa; vremenom kolekcija naraste, možda i preko svake mere, pa onda nije baš lako odabrati pravi makro. No, zadržimo se na čas na posmatranju problema iz ugla autora VBA rešenja: ako imate čestu praksu da programirate u Officeu na ovaj način, bilo bi dobro da saznate kako da olakšate izbor makroa svojim korisnicima.

Za početak, obratite pažnju da neće uvek svi makroi biti izlistani u oknu dijaloga Macros, što se dešava u tri slučaja. Prvi slučaj su funkcije: s obzirom na to da funkcija uvek vraća neki parametar, dijalog ne može da upravlja takvim postupkom izvršenja, pa ne izlistava funkciju. Drugi oblik je sličan: to je procedura (deklaracija Sub) koja sadrži parametre; pošto ne možete obezbediti parametre u dijalogu, njihov prikaz u spisku nema smisla, jer takav poziv je logičan samo iz drugog makroa. Treći način je eksplicitni i koristićete ga kada želite da sakrijete makro sa spiska: deklarišite ga kao privatnu proceduru; kada programirate modularno, gde postoji glavni makro koji samo proziva druge procedure u modulu, poštujte takav pristup.

' javna procedura se vidi u spisku
Sub VidljivaProcedura()
  MsgBox "Ovaj makro se vidi u spisku"
End Sub

' privatna procedura se ne vidi
Private Sub PrivatnaProcedura()
  MsgBox "Private Sub se vidi u spisku"
End Sub

' procedura sa argumentom se ne vidi
' ovaj argument je inače beskoristan
Sub ArgProcedura(Optional nista As Integer)
  MsgBox "Sub sa argumentom se ne vidi u spisku"
End Sub

' funkcija se ne vidi u spisku
Function ProcFunkcija() As Boolean
  MsgBox "Funkcija se ne vidi u spisku"
End Function

Pogledajte primere u priloženom listingu: možete ih preneti u bilo koji Office program, pa ispitati njihovo ponašanje. Da ne bi bilo nejasnoća, valja da obratite pažnju na nekoliko posebnosti tri varijante sakrivanja makroa sa spiska. Najpre upozorenje koje se tiče deklaracije Private Sub: setite se da osnovna svrha ovakvog deklarisanja jeste u tome da se ograniči domet dejstva prilikom poziva. Gledano iz ugla programskog koda, privatna procedura je vidljiva samo unutar istog modula. Drugim rečima, ako koristite privatnu proceduru za potrebe optimizacije kôda, pripazite na to da ona više neće biti vidljiva iz drugih modula. Štaviše, mogli biste u svakom modulu da imate različite privatne procedure istog imena; ali, nemojte to da činite da ne biste napravili zbrku (dodajte neki prefiks na ime u takvom slučaju). To je i razlog zašto vas upućujem na varijantu procedure sa "lažnim argumentom", čiji primer vidite kao makro ArgProcedura. Argument po imenu nista je beskoristan sa stanovišta operativnosti, nego služi baš sakrivanju sa spiska makroa; a ako je već koristan kao deo neke veće radne procedure, upotrebite klauzulu Optional da biste se lišili obaveze da navodite i argument procedure prilikom poziva sa drugog mesta u kodu. I konačno, neka vas ne iznenadi potpuno atipična upotreba funkcije ProcFunkcija u datom listingu: uobičajeno je da funkcija formira i vraća neku vrednost, što ovde nije slučaj. Iako je neobično, takva upotreba funkcije je sasvim legitimna. Klauzula vrednosti Boolean u ovakvom obliku uvek vraća vrednost False (numerički, to je nula), ali čak i to je nebitno, jer svakako nećete ispitivati tu vrednost.

Varijante sa namernim sakrivanjem makro procedura obezbeđuju vrlo dobar trik kojim možete podržati svoje aplikativno rešenje u nekom Office programu. Naime, ako dodeljujete makroe dugmadima koje postavljate na površinu dokumenta, verovatno znate da željeni makro nakon crtanja dugmeta povezujete izborom u dijalogu Macros koji se generički otvara kada nacrtate dugme. Ako bi to bio makro deklarisan kao Private Sub, ne biste ga videli u spisku. Međutim, nakon što povežete makro sa dugmetom, slobodno se vratite u VBE, pa deklaraciju Sub promenite u Private Sub i dugme će ostati aktivno, ali će makro ostati prikriven.

 

  (C) 2000-2009 Praktikum na Webu

PC 125


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana.