|
Microsoft Office Excel |
|
|
Sprečavanje promene radnog listaNivo:
Excel obezbeđuje više načina za promenu radnog lista, što je uobičajen ergonomski detalj. Međutim, ako kreirate upravljanu korisničku aplikaciju u Excelu, verovatno ćete poželeti da detaljno kontrolišete akcije korisnika, u šta bi se mogla ubrojati i vaša namera da sprečite promenu radnog lista dok se ne ispune potrebni uslovi za to. Evo kako ćete to učiniti. Za početak, sprečite najočigledniji način: sakrijte jezičke radnih listova. U Excelu 2003, otvorite dijalog Tools / Options / View (Alatke / Opcije / Prikaz), pa isključite polje za potvrdu Sheet Tabs (Jezičci listova). U Excelu 2007, otvorite dijalog Office > Excel Options (Office > Excel opcije), birajte grupu Advanced (Više opcija); u desnom oknu nađite grupu Display options for this worksheet (Opcije prikaza za ovu radnu svesku) u kojoj ćete naći polje za potvrdu Show sheet tabs (Prikaži jezičke listova) koje treba da isključite. Time ste rešili, rekoh, samo najočigledniji vid promene radnog lista, ali realnu zaštitu još niste postigli. Svaki iskusni korisnik zna, a većina i koristi prečice Ctrl+PageUp i Ctrl+PageDown za promenu radnog lista na prethodni, odnosno sledeći. Dakle, treba sprečiti te prečice. Ni to nije teško, ako znate kako; o tehnikama blokiranja prečica smo već pisali u više navrata. Treba da presretnete događaj ApplicationOnKey; to morate učiniti pažljivo, pošto je reč o događaju na nivou aplikacije, a ne na nivou radne sveske: morate predvideti slučaj da su otvorene i druge radne sveske u kojima ograničenje ne sme da postoji. U radnoj svesci aplikacije u kojoj ste već sakrili jezičke, otvorite VBE (Alt+F11), otvorite modul za objekat ThisWorkbook, pa u njega unesite ovo:
Private Sub Workbook_Activate()
' sprečavanje prečica pri aktiviranju
Application.OnKey "^{PgDn}", ""
Application.OnKey "^{PgUp}", ""
End Sub
Private Sub Workbook_Deactivate()
' odobravanje prečica pri deaktiviranju
Application.OnKey "^{PgDn}"
Application.OnKey "^{PgUp}"
End Sub
Ovo je već tvrđa zaštita i većina korisnika će pokleknuti. Većina ne znači i svi - neko će se već setiti da postoji i dijalog Go To (Idi na, Ctrl+G), gde može da se snađe ako zna imena radnih listova: može da upiše referencu Sheet2!A1 i promeniće aktivni radni list. Dakle, jedan način je da napravite neka besmislena imena radnih listova, takva da ih korisnik ne može znati (a jezičke ste već sakrili). Ako ste zaključali ćelije sa formulama, pa aktivirali zaštitu radnog lista, tada korisnik neće videti reference u formulama, pa zaštita dolazi na visok nivo. I taman ste pomislili kako je to skoro savršena zatita, kad jednog trenutka sami otkrivate propust u ovoj ideji: džabe ste pravili "glupa" imena radnim listovima, jer se spisak lepo vidi u oknu Project u VBE... To važi čak i ako ste zaključali kodni materijal lozinkom ili ako ste sakrili radne listove... Preostaje još jedan, priično nasilan metod koji treba da koristite sa krajnjim oprezom - zapravo, već bi trebalo da razmišljate o nekim "zadnjim vratima" svoje aplikacije, a morate misliti i na korisnikovu mogućnost da otvori radnu svesku tako da se VBA ne aktivira. Ali, zasad nećemo ići dalje: recimo da smo "odlučili" da je postignuta dovoljna zaštita. Ako imate iskustva sa problemima zaštite, podsetiću vas na zlatno pravilo: apsolutno zaštita ne postoji. Postoji samo dovoljna, celishodna zaštite - i ona koja to nije. Dakle, "nasilni" metod sprečavanja promene radnog lista se izvodi "hvatanjem za okovratnik": ako primenite sledeći makro u modulu objekta ThisWorkbook, napuštanje radnog lista više neće biti moguće, čak i ako niste primenili prethodne oblike zaštite. Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Application.EnableEvents = False Sh.Activate Application.EnableEvents = True End Sub Ovaj makro se izvršava svaki put kada se napusti (deaktivira) tekući radni list - dolazi do reaktivacije (vraćanja), što praktično znači da selekcija nekog drugog radnog lista nije moguća. Poslednje upozorenje: u praksi morate predvideti alternativne načine pristupanja sadržaju na drugim radnim listovima, u cilju ispravke ili održavanja sadržaja aplikacije. Bilo bi najbolje da sve pomenute metode primenite uz neki vid selekcije, recimo sa nekom lozinkom za prilaz. To je tehika o kojoj ćemo govoriti drugom prilikom.
|
|
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. |