代码之家  ›  专栏  ›  技术社区  ›  geometrikal

如何在Excel 2007中以编程方式更改图表中系列的线条颜色

  •  2
  • geometrikal  · 技术社区  · 17 年前

    我有一张图表,上面有一系列表示一大组(1000)离散测量值。其中一些是错误的测量,我想根据另一组描述测量准确度的数据为该系列的线条上色。坏的测量值应该是红色,好的测量值应该是绿色,介于两者之间的是从红色到黄色再到绿色的渐变。

    这应该能够与VBA编程,但我不知道该怎么做。谁能给我一些提示吗?

    2 回复  |  直到 8 年前
        1
  •  4
  •   Fionnuala    17 年前

    在VBA中给图表线上色很容易。这里有一些注释。

    Dim cht  As Chart
    Dim sc As Series
    Dim blnBad As Boolean
    Dim j
    
    j = 85 'RGB orange '
    blnBad = False
    
    'This is a chart called Chart 1, it would be possible '
    'to use the charts collection '
    Set cht = ActiveSheet.ChartObjects("Chart 1").Chart
    'A chart is composed of series of data ... '
    For Each sc In cht.SeriesCollection
        ' ... that you can iterate through to pick up '
        ' the individual data values, or a data range. '
        ' Values in this case. '
        For i = LBound(sc.Values) To UBound(sc.Values)
            ' That can be checked against another set of '
            ' values in the range Bad. '
            With ActiveSheet.Range("Bad")
                ' So, look for the value ... '
                Set c = .Find(sc.Values(i), lookat:=xlWhole, LookIn:=xlValues)
                ' and if it is found ... '
                If Not c Is Nothing Then
                    ' ... then set the Bad flag '
                    blnBad = True
                End If
            End With
        Next
        ' So, this range contains a Bad value '
        ' and we will colour it red ... '
        If blnBad Then
            sc.Border.Color = RGB(255, 0, 0)
            ' ... not forgetting the markers '
            sc.MarkerForegroundColor = RGB(255, 0, 0)
        Else
            ' Otherwise, use an increasingly yellow colour '
            sc.Border.Color = RGB(255, j, 0)
            sc.MarkerForegroundColor = RGB(255, j, 0)
    
            j = j + 30 ' getting more yellow
            ' Debug.Print j ' uncomment to see j in the immediate window '
        End If
        blnBad = False
    Next
    End Sub
    
        2
  •  1
  •   Elijah    17 年前

    推荐文章