Zdarzenia skoroszytu: po zapisaniu

Procedura AfterSave to kolejne ze  zdarzeń skoroszytu (czyli procedur uruchamianych automatycznie). Tak, jak i inne tego typu zdarzenia, znajduje się w module skoroszytu.

kliknijh, aby powiększyć

Procedura Workbook_AfterSave() jest uruchamiana automatycznie od razu po zapisaniu skoroszytu.
Procedura ta ma jeden argument:

    • SaveAsUI – typu Boolean. Zmienna pobierana automatycznie przy zapisie. Przyjmuje wartość:

      • True – jeśli plik jest zapisywany przy użyciu formularza Zapisz jako…
      • False – jesli plik jest zapisywany pod własną nazwą

Gdzie jest stosowana? Możliwości jest sporo. W najprostszym wydaniu – do zapisania gdzieś w arkuszu technicznym kiedy i ewentualnie przez kogo plik został zapisany.


Kurs Excel programowanie w VBA

 

Zdarzenia skoroszytu przed zapisaniem

Procedura BeforeSave to kolejne ze  zdarzeń skoroszytu (czyli procedur uruchamianych automatycznie). Tak, jak i inne tego typu zdarzenia, znajduje się w module skoroszytu.

Kliknij, aby powiększyć

Procedura Workbook_BeforeSave() jest uruchamiana automatycznie przed zapisaniem skoroszytu.
Procedura ta ma dwa argumenty:

    • SaveAsUI – typu Boolean. Zmienna pobierana automatycznie przy zapisie. Przyjmuje wartość:

      • True – jeśli plik jest zapisywany przy użyciu formularza Zapisz jako…
      • False – jesli plik jest zapisywany pod własna nazwą
    • Cancel – typu Boolean. Jest opcjonalny, wartość domyślna to Fałsz.
      Przypisanie w procedurze wartości Prawda – działa tak jak przycisk Anuluj – czyli zapis zostanie anulowany

Na przykład taka procedura uniemożliwia zapisanie pliku pod inna nazwą – wywołanie działania Zapisz jako… powoduje anulowanie zapisu.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then
   Cancel = True
End If
End Sub

Najczęściej służy jednak do ewentualnego sprawdzenia, czy wszystkie obowiązkowe komórki zostały wypełnione i ewentualnie wyświetlany jest komunikat.


Kurs Excel programowanie w VBA

 

Otwieranie skoroszytu

Otwieranie skoroszytu to procedura zdarzeń skoroszytu (czyli procedur uruchamianych automatycznie) działająca przy otwarciu skoroszytu.
Znajduje się ona w module skoroszytu.
Procedura Workbook_Open() jest uruchamiana jako pierwsza procedura, od razu po otwarciu.

Przykład takiej procedury wyświetlającej komunikat powitalny to:

Private Sub Workbook_Open()
MsgBox „Miłego dnia!”
End Sub

Ja często stosuję ją w przypadkach, gdy w pliku jest więcej arkuszy, a chcę, aby praca rozpoczęła się w określonym arkuszu.
Można też zastosować ją do konieczności wpisana loginu i hasła i w zależności od powiązanych uprawnień – personalizacji pokazywania/ukrywania arkuszy czy tez możliwości edycji.


Kurs Excel programowanie w VBA

 

Zdarzenie skoroszytu przez wydrukiem

Procedura BeforePrint to jedno ze  zdarzeń skoroszytu (czyli procedur uruchamianych automatycznie) . Tak, jak i inne tego typu zdarzenia, znajduje się w module skoroszytu.

kliknij, aby powiększyć

Procedura Workbook_BeforePrint(Cancel as Boolean) jest uruchamiana automatycznie zawsze przed wydrukiem. Może służyć np. do zmiany formatowania, ukrycia niektórych obiektów, przeliczenia itp.
Procedura ta ma jeden argument:

    • Cancel – typu Boolean. Jest opcjonalny, wartość domyślna to Fałsz.
      Przypisanie w procedurze wartości Prawda – działa tak jak przycisk Anuluj – czyli wydruk zostanie anulowany

Można w ten sposób np. zabezpieczyć jakiś arkusz/arkusze (także wszystkie) przed wydrukiem.


Kurs Excel programowanie w VBA

 

Zdarzenie skoroszytu przed zamknięciem

Procedura BeforeClose to jedno ze  zdarzeń skoroszytu (czyli procedur uruchamianych automatycznie) . Znajduje się ona w module skoroszytu.

kliknij, aby powiększyć

Procedura Workbook_BeforeClose(Cancel as Boolean) jest uruchamiana automatycznie zawsze przed zamknięciem skoroszytu. Może służyć np. do sprawdzenia, czy wszystkie dane zostały wprowadzone czy zapisane.
Procedura ta ma jeden argument:

    • Cancel – typu Boolean. Jest opcjonalny, wartość domyślna to Fałsz.
      Przypisanie w procedurze wartości Prawda – działa tak jak przycisk Anuluj – czyli skoroszyt nie zostanie zamknięty.

Ostatnio w jednym ze swoich projektów wykorzystałam to, żeby możliwość zamknięcia pliku miał tylko użytkownik znający hasło. Wyglądało to mniej więcej tak:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim JHaslo As String
JHaslo = InputBox(„Wpisz hasło do zamknięcia skoroszytu!”, „Kontrola uprawnień”)
If JHaslo <> „abc” Then
   Cancel = True
End If
End Sub

Przy próbie zamknięcia skoroszytu trzeba wpisać prawidłowe hasło (tu: abc) , gdyż w przeciwnym przypadku – skoroszyt nie zostanie zamknięty.


Kurs Excel programowanie w VBA