有人能告诉我以下代码有什么问题吗?
它大部分时间都在工作,但有时它无法应用正确的颜色。例如,如果单元格D112中的%从97%变为100%,则不会应用绿色,但在某些情况下会显示绿色。
基本上基于单元格D112的%值,我想在条形图上应用不同的颜色。
If Range("D112") < 0.96 Then
ActiveSheet.ChartObjects("Chart 18").Activate
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.FullSeriesCollection(1).Points(3).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(204, 0, 51)
.Transparency = 0
.Solid
End With
Range("P8").Interior.Color = RGB(204, 0, 51)
ElseIf Range("D112") >= 0.96 And Range("D112") <= 0.98 Then
ActiveSheet.ChartObjects("Chart 18").Activate
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.FullSeriesCollection(1).Points(3).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 102, 0)
.Transparency = 0
.Solid
End With
Range("P8").Interior.Color = RGB(255, 102, 0)
Else
ActiveSheet.ChartObjects("Chart 18").Activate
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.FullSeriesCollection(1).Points(3).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 153, 102)
.Transparency = 0
.Solid
End With
Range("P8").Interior.Color = RGB(0, 153, 102)
End If
答案 0 :(得分:0)
首先:您可以用If
替换多个Else
和Select Case
,它会清理并缩短您的代码。
第二:没有必要选择图表和每个条件中的点,您正在为所有场景重复相同的过程,您可以在{{{{}之前执行此操作1}}部分(或If
)。
第三:最好避免使用Select Case
,Select
和Activate
,而是完全限定所有Chart,Series和Point对象
以下代码中的更多解释;
<强> 代码 强>
Selection