|
Visual Basic for Applications |
|
|
Uredne kolekcije makroaNivo:
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.
Š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.
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2010; Valinor Design; sva prava pridržana. |