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

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *