根据计算值更新单元格更新形状的颜色
场景:我有一个仪表盘,其中包含诸如“过期任务”之类的内容。 我有一个叫做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