Получать уведомления обо всех изменениях ячеек в VBA
Я хочу получать уведомления обо всех обновлениях ячеек в excel. Мой текущий код выглядит примерно так:
Private Sub Worksheet_Change(ByVal Target As Range)
...
End Sub
Моя проблема в том, что он работает только тогда, когда происходит прямое изменение ячейки. Если я изменю ячейку, некоторые другие ячейки могут измениться, если их значения зависят от измененной ячейки.
Есть ли способ обнаружить и эти изменения? Я хотел бы избежать метода зеркального копирования.1 ответ:
Следующий код позволит вам получить доступ ко всем ячейкам, содержащим формулы, которые зависят от
Target
.Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range ... On Error Resume Next For Each cell In Target.Dependents ' Do something Next cell On Error GoTo 0 ... End Sub
Оператор
On Error Resume Next
необходим, потому что цикл выдаст ошибку, если нет зависимых ячеек.Вы также можете вызвать
Application.Calculate
перед этимFor Each
циклом, чтобы заставить пересчитать эти ячейки.