Excel VBA - 嵌套IF将颜色应用于图形

时间:2018-03-13 20:10:14

标签: excel vba excel-vba

有人能告诉我以下代码有什么问题吗?

它大部分时间都在工作,但有时它无法应用正确的颜色。例如,如果单元格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

1 个答案:

答案 0 :(得分:0)

首先:您可以用If替换多个ElseSelect Case,它会清理并缩短您的代码。

第二:没有必要选择图表和每个条件中的点,您正在为所有场景重复相同的过程,您可以在{{{{}之前执行此操作1}}部分(或If)。

第三:最好避免使用Select CaseSelectActivate,而是完全限定所有Chart,Series和Point对象

以下代码中的更多解释;

<强> 代码

Selection