繁体   English   中英

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

[英]Update color of shape based on cell with calculated value

场景:我有一个显示板,其中包含用于“过期任务”之类的图块。 我有一个名为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

更新:我已将事件更改为Worksheet.calculate如@Scott Craner所建议。 现在事件触发,它甚至进入了适当的状态,但是颜色没有改变。

有两个问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM