Visual Basic for Applications
uređuje Dragan Grbić

Bookmark and Share
Matična strana sajta
  Novo na sajtu
  Mapa sajta
  Beleške
  Kontakt
  Pretraga MSKB

 Blog Praktikuma
  RSS feed
  P@W @Tw

  Izvezi stranicu u PDF
 
Office Praktikum

VBA: ima još...
 


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

 
       

Sponzori sajta

SBB CS 1.6 game server: 82.117.200.1
 
Connectivity by SBB

 
Suština pasijansa
Suština pasijansa
 


 

Informacije

NOVOSTI

I još dva nova priloga o Excelu
Novi prilozi o Wordu
Novi i prilozi u temi "razno o Officeu"
Novi članci o novostima u Officeu 2010!

SADRŽAJI ZA PREUZIMANJE

Lokalizacija Total Commandera 7.51Obe jezičke školjke za popularni program na srpskom sad funkcionišu u bilo kojoj varijanti Windowsa!
RNDalica.ExcelDodatak za Excel 2007/2010 za generisanje slučajnih podataka!
YuConv.ExcelDodatak za Excel 2007/2010 za konverziju pisama!
YuConvNetDodatak za Word 2007/2010 za konverziju pisama i kodnih rasporeda!

SKREĆEMO PAŽNJU

Kako pretraživati MSKB
a pronaći ćete i još mnogo novih sadržaja...

KONTAKT

Da li znate za pravila koja važe pri kontaktu sa nama? Molimo vas da se obavestite o tome!
 
POZIVAMO VAS

i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.

  (C) 2000-2010 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-2011 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-2011; Valinor Design; sva prava pridržana.