我发现这个问题:“使用VBA空白的系列名称删除图例项”这里非常相似,我有这个问题,但与一捻。
该图表是一个堆叠条形图,每个条形图都有多个系列。我有一些填充,其中填充颜色和线条边框已被删除,因此它看起来像甘特图。目前看起来像这样(假人)
此外,必须删除名为 padding 的图例条目和末尾的一些额外图例条目。我尝试了以下在负载图表宏结束时触发的代码:
With ActiveChart
For i = .Legend.LegendEntries.Count To UptoRequiredSeries + 1 Step -1
.Legend.LegendEntries(i).Delete
' Debug.Print .Legend.LegendEntries(i - 1)
Next i
End With
我不想使用链接问题中建议的 IsFiltered 属性。我真的想删除我不想要的图例条目。问题变得更加复杂,因为我发现图表在清除图表后保留了图例条目的数量。所以下次我加载图表时,现有的图例条目也会被删除。
请求您的帮助,提前致谢。
EDIT1:我遇到这个问题是因为系列比图例多,这是因为某些系列颜色必须重复。例如:A 系列,然后是 B,然后是 Closed,然后是 A。当一种颜色需要重复时,我会创建一个新系列并在数据数组中为它的其他情况设置零。我使用切片操作来设置值数组。
您需要做一些记账,以跟踪要删除的图例条目。不幸的是,系列和图例条目不通过对象模型相关联,这是一个严重的缺点。
然后您需要将它们从最后一个(最高数字)删除到第一个。
您没有进入删除图例条目的标准,但假设您知道要删除最后两个和第一个“填充”。你会做这样的事情:
Dim iSrs As Long
For iSrs = ActiveChart.SeriesCollection.Count To ActiveChart.SeriesCollection.Count - 1 Step -1
ActiveChart.Legend.LegendEntries(iSrs).Delete
Next
ActiveChart.Legend.LegendEntries(1).Delete
如果比较复杂,你可能只需要设置一个数组(1到.SeriesCollection.Count)并在这个数组中输入True或False是否删除相应的图例条目,然后从最后一个倒数到第一个,如果对应的数组元素为True,删除图例项。
如果您删除了一些条目并需要恢复它们,请删除图例并恢复它。恢复的图例将包含所有图例条目,您可以重新开始。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句