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
 

Uredne kolekcije makroa

Nivo:  NIVO 2 - klinite za objašnjenje


Ako intenzivno koristite VBA, praveći kolekcije sadržaja koje ste sami kreirali ili ste pronašli korisne priloge u literaturi ili na Internetu, vremenom će nastati priličan metež, ne budete li pripazili. Naučite da raspoređujete makroe u logične grupe po modulima.

Pamtim pismo jednog korisnika koji je pominjao kako je angažovao sistem Word VBA makroa koji kod njegovog kolege radi besprekorno, a kod njega jedna komanda izaziva potpuno neočekivanu grešku. Dopisivali smo se neko vreme, dok ga najzad nisam zamolio da mi pošalje ceo svoj glavni predložak Normal.Dot, jer nisam imao ideju o uzroku. Imao sam šta da vidim: u jednom jedinom modulu NewMacros (što je generičko ime modula za makroe koje snimate), nalazilo se oko 150 makroa za sve i svašta. Posebno upadljivo, gomila tih makroa se zvala aaa, bbb, zzz i slično. Uzrok problema je bio taj što su postojala dva imena makroa istog, "vrlo opisnog" imena d111, pa je VBA podsistem prijavljivao grešku dvostrukog imena.

Moj propust u prepisci je što nisam mogao da pretpostavim, a trebalo je, da kolega toliko neuredno koristi VBA da se zaista desio slučaj udvajanja imena. A u spisku makroa u Wordu (Alt+F8), ako se dva istoimena makroa nalaze u istom modulu, Word će izlistati samo jedno ime; ako je isto ime makroa u dva modula, videćete prefiks sa imenom modula. Zato u toku prepiske nisam pogodio pravi uzrok problema.

Ovaj slučaj me podseća da ovde ponekad moramo da govorimo i o trivijalnim stvarima. Idealno je da održavate makroe urednim, čak i ako vam se čini da je to isto gubljenje vremena; verujte mi: nije!

Šta je najbolje: otvorite VBE (Alt+F11), pa u predlošku Normal.Dot (u Excelu: Personal.XLS) definišite novi modul za svaku grupu makroa koji čine neki posao. I ne samo to, nego pokušajte da flagrantno dajete iste prefikse makroima iste namene, tako da ih grupišete u oknu dijaloga Macros. Na primer, tako moji Word makroi koji služe za uređenje jezika u tekstu (a kojima sam dodelio prečice) imaju isti prefiks: SetLangSrpski, SetLangEnglish i SetLangListing, a nalaze se posebnom modulu po imenu SetLang. Čim snimim neki makro, odlučujem da li je vredno da trajno ostane ili će biti izbrisan posle nekog vremena. U zavisnosti od toga, odmah ga premeštam u modul MojiMakroi ili u TempMakroi, ako već ne postoji neko predviđeno mesto u modulima Tabele, Fontovi, itd. Ako je makro "vruć", to jest provodim neko vreme igrajući se njime, dajem mu privremeni prefiks aaa_ kako bih osigurao da bude na vrhu liste makroa. Na kraju to menjam u neko trajno ime ili menjam prefiks u zzz_, što kod mene ima značenje "neka ostane, možda posluži", a ostaje u modulu zzz.

Razumeli ste princip, nadam se.

A ako se već odlučite na veliko spremanje, što ćete kad-tad morati da učinite ako vam je stalo do sopstvene produktivnosti, ne bilo vam teško: obeležite dva-tri reda ispod klauzule Sub ImeMakroa() apostrofom, čime definišite komentar; sad tu upišite svrhu i način angažovanja makroa, kao i datum kad ste ga poslednji put menjali. Ovako nekako:

Sub zzz_primer()
'
' ovo ne služi ničemu
' osim za demonstraciju komentara

MsgBox "Sad je OK!"

End Sub

Znam šta mislite, ali pokušajte barem jednom da mi verujete na reč. Na dan kreiranja novog makroa, uvek ćete pomisliti kako nije bitno da to uradite. Raspitajte se kod svojih kolega programera: ni oni nisu počeli to da rade dok prvi put nisu bili zbunjeni posmatrajući sopstvenu proceduru napisanu pre samo tri meseca... Što se mene tiče, ostalo je još samo da najzad počnem da reagujem na stalne opomene kolege Mihaljeva što ne koristim uredno deklarisanje i mađarsku notaciju na promenljivama u svojim VBA makroima. Sada, nažalost, nemam dovoljno mesta da vam dokažem koliko je Bane u pravu, barem u jednom delu svoje tvrdnje. Ali, o tome drugi put.

 

  (C) 2000-2009 Praktikum na Webu

PC 130


 
 

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.