根据计算值更新单元格更新形状的颜色

场景:我有一个仪表盘,其中包含诸如“过期任务”之类的内容。 我有一个叫做tileOverdueTasks的形状。 最重要的是,我有一个价值=Z11的艺术家。 单元格Z11基于单独的工作表( Sheet5 (Tasks) )中的值计算。 如果Tasks.Z11 = 0我希望tileOverdueTasks为绿色。 如果是别的,我希望它是红色的。

我发现下面的代码,但似乎没有触发,我假设由于单元格Z11没有被手动更改,因此也不是ActiveWorkbook 。 那么,如何根据上面的情况对此进行修改?

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("Z11")) Is Nothing Then If IsNumeric(Target.Value) Then If Target.Value > 0 Then ActiveSheet.Shapes("tileOverdueTasks").Fill.BackColor.RGB = vbRed Else ActiveSheet.Shapes("tileOverdueTasks").Fill.BackColor.RGB = vbGreen End If End If End If End Sub 

更新:我已经改变了@Scott Cranerbuild议的事件为Worksheet.calculate 。 现在事件发生,甚至进入正确的状态,但颜色不变。

有两个问题。

1)正如Scott Craner指出的那样,我需要使用Worksheet_Calculate事件。

2)由于形状的风格, Fill.BackColor不起作用。 我将其更改为Fill.ForeColor ,现在它工作。

这是工作代码:

 Private Sub Worksheet_Calculate() If Sheets("Dashboard").Range("Z11").Value > 0 Then Sheets("Dashboard").Shapes("tileOverdueTasks").Fill.ForeColor.RGB = RGB(185, 0, 0) Else Sheets("Dashboard").Shapes("tileOverdueTasks").Fill.ForeColor.RGB = RGB(0, 185, 0) End If End Sub