基于单元格中的值更改形状填充颜色的VBA代码

基于单元格中的值更改形状填充颜色的VBA代码,vba,excel,Vba,Excel,这似乎不起作用,除非我在E9中手动编写示例500。 有解决方案吗?当单元格内容被公式更改时,不会触发工作表更改事件。要实现这一点,您需要工作表计算事件,而不是 试试这个。在图纸模块上放置以下代码 =IF(H9="";"";INDEX(Sales!E39:P39;MATCH(Main!AE3;Sales!E34:P34;0))) Private子工作表_Calculate() 暗淡单元格作为范围 设置单元格=范围(“E9”) 如果是数字(单元格),则 如果单元格值

这似乎不起作用,除非我在E9中手动编写示例500。
有解决方案吗?

当单元格内容被公式更改时,不会触发工作表更改事件。要实现这一点,您需要工作表计算事件,而不是

试试这个。在图纸模块上放置以下代码

=IF(H9="";"";INDEX(Sales!E39:P39;MATCH(Main!AE3;Sales!E34:P34;0)))
Private子工作表_Calculate()
暗淡单元格作为范围
设置单元格=范围(“E9”)
如果是数字(单元格),则
如果单元格值<0,则
ActiveSheet.Shapes(“矩形2”).Fill.ForeColor.RGB=vbRed
其他的
ActiveSheet.Shapes(“矩形2”).Fill.ForeColor.RGB=vbGreen
如果结束
如果结束
端接头

当您不手动输入值时,索引/匹配公式是否会返回值?当我在下拉列表中更改月份时,索引/匹配公式会返回值。效果很好。谢谢@不客气!很高兴它对你有用。请花一分钟时间接受答案作为解决方案,将您的问题标记为已解决。:)@如果答案对你有帮助,这对人们来说意义重大。@sktneer击败了我:D
=IF(H9="";"";INDEX(Sales!E39:P39;MATCH(Main!AE3;Sales!E34:P34;0)))
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