есть задача, по сумме ячеек A1 и B1, результат записываем в C1, нужно запускать макрос, когда происходит изменение значения в C1, когда правлю руками С1, все работает, но так как данные в A1 и B1 импортируются из других приложений, при изменении суммы в C1 макрос не запускается, пробовал таким подходом:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("C1")
If Not Application.Intersect(rng, Range(Target.Address)) Is Nothing Then
Application.EnableEvents = False
MsgBox "Пуск"
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Application.DisplayAlerts = False
If Not (Intersect(Target, Union(Me.Range("C1"), Me.Range("C1").Precedents)) Is Nothing) Then
Application.EnableEvents = False
MsgBox "Пуск"
End If
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
заготовка №2
Private Sub Worksheet_Calculate()
Static v As Variant
If Me.Range("A1").Value <> v Then
MsgBox "A1 изменена"
v = Me.Range("A1").Value
End If
End Sub
V, благодарствую, второй вариант сработал, первый почему-то работает только после вмешательства руками.
Код
Private Sub Worksheet_Calculate()
Static v As Variant
If Me.Range("C1").Value <> v Then
Application.EnableEvents = False
Call mymacros
v = Me.Range("C1").Value
End If
Application.EnableEvents = True
End Sub
Ещё есть ваиант с текстбоксом - делаем невидимый текстбокс, завязываем его на эту ячейку. А уже в его событиях есть нужное - при изменении делаем дело.
Precedents - Не вдаваясь вглубь - это связанные ячейки, вляющие не значение.
Не поняла пока( Вот берём Target, Union(Me.Range("C1"), Me.Range("C1").Precedents) Target это наверное или A1 или В1 что бы сработало событие они должны измениться. Me.Range("C1").Precedents это A1 и В1 (влияющие ячейки) для чего тогда Me.Range("C1") ?
Precedents - это только когда формула в ячейке у неё есть Precedents?
Насколько я понимаю, отслеживается событие изменения в целевой ячейке С1, а также в влияющих ячейках. Если в С1 будет формула =А1+В1, и произойдет изменение хоть в одной из этих трех ячеек, то ...