01# 需求说明
最近遇到一个需求,用户需要再Excel 图表中动态增加数据集Series,但是又不希望出现在图例中(其他Series有图例,所以不能整体图例删除),这就需要我们删除掉制定的Legend。
02# 遇到的问题
在Legend、LegendEntries、LegendKey这些类型中,并没有发现与Series关联的项,也没有Legend显示的名称之类的属性,这样就不知道删除哪个Legend了。
03# 解决方案
后来发现Series和LegendKey共用Border属性,这样就给我们提供了一个思路,先个指定的series指定一个border 的颜色,然后再遍历所有Legend,如果发现LegendKey的border也是这个颜色,那就可以删除啦。代码如下:
''serie指的是你要删除Legend的Series
''先给serie的border制定一个少有的颜色
serie.Border.Color = RGB(254, 254, 254)
''遍历所有Legend
dim i as Long
For i= chartObj.Chart.Legend.LegendEntries.Count To 1 Step -1
If chartObj.Chart.Legend.LegendEntries(lngLoop).LegendKey.Border.Color = RGB(254, 254, 254) Then
chartObj.Chart.Legend.LegendEntries(lngLoop).Select
chartObj.Chart.Legend.LegendEntries(lngLoop).Delete
end if
next
经过测试,没有问题,不想出现的Legend已经删除掉了!
04# 后记
在网上没找到太多这方面资料,记录下来为后人提供方便吧。
元宝的程序员爸爸2022年4月于郑州