簡體   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