基于单元格中的值更改形状的fillcolor的VBA代码

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))) 

这似乎没有工作,只有当我在E9手动写入例如500。 任何解决scheme

单元格内容被公式更改时,不会触发换页事件。 为了达到这个目的,你需要纸张计算事件。

试试这个。 将下面的代码放在Sheet Module上。

 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