У меня есть эта функция VBA, которая отлично работает для ручной смены ячеек, но она не работает для столбца, где функция = AVERAGE(). То, что я пытаюсь сделать, это изменить цвет шрифта, где средний. Если в среднем больше, чем 0,6, то шрифт ColorIndex является 3, и если среднее значение столбца меньше или равно 0,6 набора шрифтов ColorIndex 10.Excel VBA: Worksheet_change не обнаруживает пересчет
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Set c = Range(Target.Dependents.Address)
For Each c In Target.Cells
If Not Intersect(c, Range("X:AI")) Is Nothing Then
If c > Range("H" & c.Row).Value Or c < Range("G" & c.Row).Value Then
c.Font.ColorIndex = 3
ElseIf c <= Range("H" & c.Row).Value And c >= Range("G" & c.Row).Value Then
c.Font.ColorIndex = 10
End If
...
ElseIf Not Intersect(c, Range("AX:AX")) Is Nothing Then
If c > 0.6 Then
c.Font.ColorIndex = 3
ElseIf c <= 0.6 Then
c.Font.ColorIndex = 10
End If
End If
Next c
End Sub
«Worksheet_Change» не вызван изменениями ячеек по формулам: для этого вам нужно использовать «Worksheet_Calculate». –
Я где-то читал, что вы не можете получить местоположение ячейки, как в Worksheet_Change (ByVal Target As Range), и мне это нужно;/ – ArnoldasM
Нет - в событии Calculate нет эквивалента «Target»: вы застряли, чтобы следить за весь диапазон интересов –