需要使用VBA更改数据透视表上的颜色

时间:2014-11-19 21:24:01

标签: excel excel-vba excel-2010 vba

问题:

我使用Excel 2010和多个数据透视表生成报告。当我生成报告时,我无法将数据透视表系列的颜色设置为静态值。有时候“Pass”系列显示为“RED”,这会造成混乱。

我尝试使用下面的代码强制更改系列中的颜色:

Sheets("PSD").Select
ActiveSheet.ChartObjects("Chart 5").Activate
ActiveChart.SeriesCollection(1).Select
With Selection.Format.Fill
    .Visible = msoTrue
    .ForeColor.RGB = RGB(0, 176, 80)
    .Transparency = 0
    .Solid
End With

代码的问题是 SeriesCollection(1)并不总是我想要的系列,当我将代码更新为SeriesCollection(“Pass”)时,它不起作用。

我需要找到一种方法来按名称引用 SeriesCollection ,如果没有,我可以继续使用 On Error Resume Next 无需检查它。

2 个答案:

答案 0 :(得分:2)

要通过它的名称来处理系列,你可以这样做:

Sub cht()
    Dim cht As Chart
    Set cht = Sheets("PSD").ChartObjects("Chart 5").Chart

    Dim ss As Series
    Set ss = cht.SeriesCollection("Pass")

    With ss.Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(0, 176, 80)
    End With
End Sub

在:

enter image description here

后:

enter image description here

答案 1 :(得分:0)

我只是在研究这个。

您可以评估索引系列集合的名称,然后根据它进行操作。这是我的 8 个(硬编码)情况的示例,这些情况是我的系列可能性,但我想它可以以某种方式是动态的。

 Sub Format_GraphPertes_TRG(PV_Chart_Name)
    On Error Resume Next
    Dim i
    
    
    ActiveSheet.ChartObjects(PV_Chart_Name).Activate

    
'== Balayage des legendes dans le chart
For i = 1 To 8
    
    ActiveChart.FullSeriesCollection(i).Select
    'MsgBox ActiveChart.FullSeriesCollection(i).Name
    
    Select Case Left(ActiveChart.FullSeriesCollection(i).Name, 2)
    
    Case "01"        
        With Selection.Format.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(0, 176, 80)
            .Transparency = 0
            .Solid
        End With
     
    Case "02"
        With Selection.Format.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(255, 0, 0)
            .Transparency = 0
            .Solid
        End With
        
    Case "03"
        With Selection.Format.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(255, 255, 0)
            .Transparency = 0
            .Solid
        End With
        
    Case "04"
        With Selection.Format.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(174, 171, 171)
            .Transparency = 0
            .Solid
        End With
   
        
    Case "05"
        With Selection.Format.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(72, 161, 250)
            .Transparency = 0
            .Solid
        End With
    
         
    Case "06"
        With Selection.Format.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(201, 43, 152)
            .Transparency = 0
            .Solid
        End With
    
        
    Case "07"
        With Selection.Format.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(47, 103, 153)
            .Transparency = 0
            .Solid
        End With
        
    End Select
    
    
Next

    
    
End Sub