Это должно быть просто. Когда значение ячейки изменяется, я хочу вызвать некоторый код VBA. Ячейка (D3) представляет собой расчет из двух других ячеек =B3*C3
. Я попытался 2 подхода:Макрос триггера VBA при изменении значения ячейки
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 And Target.Row = 3 Then
MsgBox "There was a change in cell D3"
End If
End Sub
Поскольку клетка является расчет это не срабатывает, когда изменяется значение, потому что вычисление остается тем же самым. Я также пробовал:
Private Sub Worksheet_Calculate()
MsgBox "There was a calculation"
End Sub
Но у меня есть несколько расчетов на листе, и он срабатывает несколько раз. Есть ли способ определить, какие вычисления были изменены в событии расчета? Или есть ли другой способ отслеживать изменения D3?
Я разместил вариант и публичную функцию на листе vba, где находится ячейка. Я изменил формулу на '= D3AlertOnChange (B3 * C3)', и он говорит '#NAME? 'Я поместил код в неправильное расположение? –
Попробуйте поместить его в стандартный модуль. Щелкните правой кнопкой мыши по любому из листов и выберите «Вставить -> Модуль». – Chel
Хотя я могу настроить это решение для удовлетворения моих потребностей, я хотел бы упомянуть, что это событие запускается до того, как ячейка обновлена на листе, а не после. Поместите «MsgBox (val)» справа в начале функции, которую вы видите, что функция получает новое значение параметра, но вы можете видеть, что это значение не было обновлено в ячейке на листе, но остерегайтесь. –