Событие Change срабатывает при изменении ячейки пользователем или макросом. Однако стоит отметить, что оно не возникает, если изменение происходит в результате вычислений формулы или добавления нового объекта на рабочий лист.
Процедура Worksheet_Change вызывается с аргументом Target, который представляет собой объект Range – измененную ячейку или диапазон, вызвавший событие. Эту процедуру нужно писать в модуле кода объекта Worksheet. Приведенный ниже код выводит сообщение с адресом измененного диапазона:
Разберём код:
1.Private Sub Worksheet_Change(ByVal Target As Excel.Range):
- Private Sub: Объявляет начало процедуры.
- Worksheet_Change: Это событие срабатывает, когда происходит изменение на листе Excel.
- ByVal Target As Excel.Range: Определяет параметр Target как объект Excel.Range, который представляет измененную ячейку или диапазон.
2.MsgBox "Диапазон или ячейка по адресу " & Target.Address(False, False) & " были изменены.":
- MsgBox: Это функция, выводящая диалоговое окно с сообщением.
- "Диапазон или ячейка по адресу " & Target.Address(False, False) & " были изменены.": Это текст сообщения, которое будет отображаться в окне. Target.Address(False, False) используется для получения адреса измененной ячейки без абсолютных ссылок на строки и столбцы.
После этого, внесите изменения на рабочем листе различными методами, чтобы отследить адрес измененного диапазона при каждом событии Change.
Если в строке Target.Address(False, False), не указывать (False, False), то сообщение будет со знаком доллара (абсолютные ссылки).
Кстати уважаемые читатели интересно отметить, что некоторые действия, которые, казалось бы, должны вызывать событие Change, на самом деле этого не делают, в то время как другие, казалось бы, не связанные с этим событием, вызывают его. Например:
Анализируя указанный выше список, можно сделать вывод, что использование события Change для отслеживания изменений в ячейках не всегда является целесообразным.