Zdarzenie arkusza: przed kliknięciem prawym przyciskiem myszy

Worksheet_BeforeRightClick to jedno ze zdarzeń arkusza , automatycznie wykrywające kliknięcie prawym przyciskiem myszy w arkuszu. 

Ma 2 argumenty:

    • Target – typu Range.
      Komórka, która została dwukrotnie kliknięta;

    • Cancel  – typu Boolean
      dla wartości True – anulowana jest przypisana akcja,
      wartość domyślna to False.

Standardowo – po kliknięciu prawym przyciskiem myszy – wyświetlane jest menu podręczne:

Wykorzystując zdarzenie BeforeRightClick można jednak w danym arkuszu zmienić, usunąć niektóre przyciski, dodać własne (np.uruchamiające makro). 

Przykład procedury, który po kliknięciu prawym przyciskiem myszy nie wyświetla menu podręcznego,a jedynie komunikat:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox „Menu podręczne jest niedostępne.”
End Sub

Efekt wygląda tak:


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Zdarzenie arkusza: przed podwójnym kliknięciem

Worksheet_BeforeDoubleClick to jedno ze zdarzeń arkusza , automatycznie wykrywające dwukrotne kliknięcie w arkuszu. 

kliknij, aby powiększyć

Ma 2 argumenty:

    • Target – typu Range.
      Komórka, która została dwukrotnie kliknięta;

    • Cancel  – typu Boolean
      dla domyślnej wartości False – komórka jest w trybie edycji, kursor na pasku formuły,
      dla wartości
      True – komórka jest aktywna, ale nie w trybie edycji

Jeżeli komórka Target jest zablokowana i włączona jest ochrona arkusza, uruchomienie procedury z wartością Cancel=True wyświetli błąd Excela z informacją o włączonej ochronie (brak możliwości  przejścia do edycji komórki).
Niezależnie od wartości tego parametru – przy włączonej ochronie nie da się zmienić wartości i formatowania tej komórki. 

Przykład procedury, który po kliknięciu dwukrotnym w komórce, uruchamia jakąś procedurę Dwuklik z parametrem wejściowym będącym adresem komórki Target:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Call Dwuklik(Target.Address)
Cancel = True
End Sub

 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Zmiana zaznaczenia w arkuszu

Worksheet_SelectionChange to jedno ze zdarzeń arkusza , automatycznie wykrywające zaznaczenia w arkuszu.

kliknij, aby powiększyć

Procedura ta znajduje się w module arkusza. Ma jeden argument Target , typu Range. Argument ten informuje, która komórka/komórki została zaznaczona. 

Procedura Worksheet_SelectChange jest często stosowana i  ma różne praktyczne zastosowania.  Warto jednak stosować ją rozsądnie i z przemyśleniem, gdyż bardzo łatwo można doprowadzić do zapętlenia. 

W niektórych przypadkach warto też zastanowić się nad wyłączaniem zdarzeń – przydaje się.


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Zmiana w arkuszu

Worksheet_Change to jedno ze zdarzeń arkusza , automatycznie wykrywające zmianę w komórce.

kliknij, aby powiększyć

Procedura ta znajduje się w module arkusza (każdy arkusz skoroszytu ma swój własny moduł).
Ma jeden argument Target , typu Range. Argument ten informuje, która komórka/komórko zostały zmienione.
Zmiana komórki oznacza zmianę jej wartości, wpisanej ręcznie/wprowadzonej kodem VBA.  Komórki, w których znajdują się formuły, nawet jeżeli zmieniają swoją wartość na skutek zmiany argumentów, nie są w ten sposób wykrywane. 

Procedura Worksheet_Change jest często stosowana i  praktyczna. Jeżeli istotna jest dla mnie tylko jednak komórka (np.A1), zmiana której powinna uruchomić  jakąś procedurę, robię to tak jak w przykładzie:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then
       ’odwołanie do ciągu instrukcji lub innego makra
End If
End Sub

W tym przypadku zmiana w każdej innej komórce wprawdzie wywoła zmianę, ale jeżeli nie wejdzie w warunek, ciąg instrukcji nie zostanie wykonany.
Ja w swoich projektach najczęściej stosuję stosuję też zasadę, żeby najpierw sprawdzać ilość komórek w zakresie. Może mieć to znaczenie, szczególnie jeśli zakres jest wielokomórkowy, a istotna jest wartość zmienianej komórki.
W niektórych przypadkach warto też zastanowić się nad wyłączaniem zdarzeń – przydaje się.


Kurs Excel programowanie w VBA

 

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