这是一个非常简单的愚蠢问题之一,但我无法弄清楚什么是错的,而且我在互联网上发现的一切都没有用。
我只想在更改数据透视表中的过滤器后,在数据透视表中重新着色系列行。这是我尝试过的:
ThisWorkbook.Charts(ChartName).SeriesCollection(SeriesName) _
Format.Line.ForeColor = RGB(75, 172, 198)
该代码给出了“下标超出范围”错误。我也尝试过:
Sheets(SheetName).ChartObjects(ChartName).Chart.SeriesCollection(SeriesName) _
.Format.Line.ForeColor = RGB(75, 172, 198)
以及
... .ForeColor.ColorIndex = 3
以及
... .ForeColor.ObjectThemeColor = msoThemeColorAccent4
但是那些都给我一个“类型不匹配”的错误。 Excel的VBA录音机给了我:
ActiveChart.SeriesCollection(2).Select
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorAccent4
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0.400000006
.Transparency = 0
End With
我确定我在某处有一些愚蠢的,明显的错误,但我不能为我的生活找出如何在数据透视表中访问系列的颜色属性。有时感觉就像试图在一个疯狂的迷宫中试图找出某个属性属于VBA的神秘的物体层次......
答案 0 :(得分:0)
我从调试一个简单的例子中发现,显然你不能将.Name
属性分配给数据透视图中的系列。我希望这会引发错误,但事实并非如此。它只是通过任务,好像什么也没发生。
Sub Test()
Dim pivotChart As ChartObject
Dim cht As Chart
Dim srs As Series
Dim seriesName As String
Set pivotChart = ActiveSheet.ChartObjects(1)
Set cht = pivotChart.Chart
Set srs = cht.SeriesCollection(1)
'First look at the name:
Debug.Print srs.Name
'Assign a new name to the string variable
seriesName = "Name"
'Assign the new name from string var to the series
srs.Name = seriesName
'Now review that the name has changed. It hasn't!!
Debug.Print ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Name
End Sub
答案 1 :(得分:-1)
您似乎有尝试的解决方案。我找到的一些东西(在XL帮助中很多):
因此,您的代码可能如下所示:
Dim cht as Chart
Dim cg as ChartGroup
Set cht = ActiveSheet.ChartObjects(ChartName)
With cht.ChartGroups(cg)
.HasSeriesLines = True 'turn on series lines for the chart group
With .SeriesLines.Border
.ColorIndex=[pick your color]
End With
End With