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

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ę.