Код VBA для изменения fillcolor формы на основе значения в ячейке

102
11

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("E9")) Is Nothing Then Exit Sub
If IsNumeric(Target.Value) Then
If Target.Value < 0 Then
ActiveSheet.Shapes("Rectangle 2").Fill.ForeColor.RGB = vbRed
Else
ActiveSheet.Shapes("Rectangle 2").Fill.ForeColor.RGB = vbGreen
End If
End If
End Sub

В ячейке E9 имеет формулу:

=IF(H9="";"";INDEX(Sales!E39:P39;MATCH(Main!AE3;Sales!E34:P34;0)))

Это, похоже, не работает, только если я пишу вручную, например, 500 в E9. Любые решения?

спросил(а) 2017-11-21T15:56:00+03:00 3 года, 11 месяцев назад
1
Решение
66

Событие изменения листа не запускается, когда содержимое ячейки изменяется по формуле. Для этого вам нужно скорее рассчитать событие Calculate.

Попробуй. Разместите следующий код на листовом модуле.

Private Sub Worksheet_Calculate()
Dim cell As Range
Set cell = Range("E9")
If IsNumeric(cell) Then
If cell.Value < 0 Then
ActiveSheet.Shapes("Rectangle 2").Fill.ForeColor.RGB = vbRed
Else
ActiveSheet.Shapes("Rectangle 2").Fill.ForeColor.RGB = vbGreen
End If
End If
End Sub

ответил(а) 2017-11-21T16:10:00+03:00 3 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема