Aktywacja arkusza

Każdy arkusz w skoroszycie Excela ma swój własny moduł edytora VBA. Można tam tworzyć procedury automatycznie uruchamiane zdarzeniami arkusza
Jednym z często stosowanych takich zdarzeń jest Aktywacja arkusza.

kliknij, aby powiększyć

Procedura Worksheet_Activate() jest uruchamiana zawsze przy aktywacji skoroszytu.

Przykład takiej procedury przechodzącego do pierwszej komórki aktywowanego arkusza to:

Private Sub WorkSheet_Activate()
Range(„A1”).Activate
End Sub

Ja w swoich projektach najczęściej stosuję tę metodę do ukrycia/odkrycia pewnych obszarów, ustawienia obszaru wydruku itp.


Kurs Excel programowanie w VBA

 

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

 

Funkcja arkuszowa SumIfs

Funkcja WorksheetFunction.SumIfs() to jedna z funkcji matematycznych  VBA w Excelu. Wynikiem jej działania jest suma z zakresu komórek spełniających określone kryteria.

kliknij, aby powiększyć

Argumenty funkcji to:

    • Arg1 – zakres komórek z wartościami do zsumowania. Argument obowiązkowy
    • Arg2 – zakres komórek, gdzie będzie sprawdzane kryterium 1 .
      Argument obowiązkowy.
    • Arg3 -kryterium do sprawdzenia

Kolejne argumenty – to pary zakres do sprawdzenia i związane z nim kryterium. To już argumenty opcjonalne.

Funkcja SumIfs jest w zasadzie rozbudowaną o kolejne argumenty funkcją SumIf – umożliwia tylko wprowadzenie większej ilości kryteriów.

Odpowiednikiem funkcji w Excelu jest funkcja Suma.Warunków()


Kurs Makra i VBA w Excelu dla początkujących