Jak utworzyć komunikat powitalny automatycznie pojawiający się na starcie dokumentu i jak nie pozwolić zamknąć dokumentu dopóki określone pole nie zostanie wypełnione?
Jak utworzyć komunikat powitalny automatycznie pojawiający się na starcie dokumentu i jak nie pozwolić zamknąć dokumentu dopóki określone pole nie zostanie wypełnione?
Zapewne większość czytelników spotkała się z sytuacją, gdzie na starcie dokumentu Excela pojawiał się komunikat o makrach. Użytkownik podejmuje wtedy ważną decyzję - włączyć je czy nie. Decyzja ta jest taka ważna właśnie ze względu na zdarzenia, które natychmiast po wyrażeniu zgody na działanie makr mogą zacząć wykonywać jakiś kod. Głównym podejrzanym jest tu zdarzenie Workbook_Open, które jak nietrudno się domyślić uruchamia się automatycznie przy starcie dokumentu (przy włączonych makrach). Tak więc zdarzenia, to przewidziane przez projektantów Excela typowe czynności, które wykonuje użytkownik w Excelu.
Najpopularniejsze zdarzenia Skoroszytu to:
- Otwieranie (Workbook_Open).
- Zamykanie (Workbook_BeforeClose(Cancel As Boolean)).
Dla każdego takiego zdarzenia może automatycznie wykonywać się jakiś kod. Kod ten musi być umieszczony w module skoroszytu. Procedury zadziałają tylko wtedy, kiedy ich nazwy będą zgodne ze wzorcem: Obiekt_Zdarzenie, np.:
Private Sub Workbook_Open()
MsgBox "Witaj " & Application.UserName
End Sub
Powyższa procedura przywita użytkownika korzystając z jego nazwy wpisanej w opcjach Excela, lub:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Len(Range("A1")) < 4 Then
MsgBox "Komorka A1 musi być wypełniona przed zamknięciem dokumentu!"
Cancel = True
Else
MsgBox "OK, komorka A1 wygląda na poprawnie wypełnioną :)"
Me.Save
End If
End Sub
Powyższa procedura przy próbie zamknięcia skoroszytu sprawdzi, czy w komórce A1 znajdują się przynajmniej 4 dowolne znaki. Jeżeli nie, dokument się nie zamknie, jeżeli tak, dokument zostanie zapisany i zamknięty.
Tak więc zdarzenia są pożyteczne, ale trzeba pamiętać, że mogą też zawierać szkodliwy kod.