我正在设计KPI仪表板,需要具有10多种形状,这些形状会根据单元格的值更改颜色。我也希望颜色自动更新。我的问题是我使用的代码只能对每个模块/每页2个形状执行此操作。
我还遇到了颜色更新的问题:仅当在与形状相同的工作簿中更改单元格时,形状才会更改颜色。当我从另一个工作簿更改链接的单元格时,形状的工作簿中的单元格将更新,但是形状不会更新。
我尝试复制代码并更改变量,但这似乎不起作用。有没有一种方法可以遍历所有形状和像元值?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B34", "B35")) Is Nothing Then Exit Sub
If Sheets("M254 Daimler").Range("B34").Value >= 0.75 And Sheets("M254 Daimler").Range("B34").Value <= 0.84 Then
ActiveSheet.Shapes.Range(Array("Donut 10")).Select
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0)
.Transparency = 0
.Solid
End With
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0)
.Transparency = 0
End With
End If
If Sheets("M254 Daimler").Range("B35").Value >= 0.75 And Sheets("M254 Daimler").Range("B35").Value <= 0.84 Then
ActiveSheet.Shapes.Range(Array("Donut 31")).Select
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0)
.Transparency = 0
.Solid
End With
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0)
.Transparency = 0
End With
End If
End Sub
仅需注意:我已经取出elseif语句,因为它们的格式与if语句相同,并且代码在所有条件下都变得有些重复。