如何在Excel VBA生成的图表中移除空白图例?
解决图表空白图例问题
方法一:移除已生成的空白图例项
修改你的VBA代码,在图表设置的With块中添加遍历并删除空白图例项的逻辑:
Option Explicit Sub GraphOn() Sheet1.Activate If ActiveSheet.ChartObjects.Count > 0 Then Sheet1.ChartObjects.Delete End If Sheet1.Range("H2:L49").Select Sheet1.Shapes.AddChart2(227, xlLine).Select With Sheet1.ChartObjects(1).Chart ' 设置图表标题 .HasTitle = True .ChartTitle.Caption = "=DoNotModify!R2C15" ' 倒序遍历图例项,删除空白或指定名称的项 Dim i As Integer For i = .Legend.LegendEntries.Count To 1 Step -1 ' 匹配空白名称或"年份"(根据你的数据实际情况调整) If .Legend.LegendEntries(i).Name = "" Or .Legend.LegendEntries(i).Name = "年份" Then .Legend.LegendEntries(i).Delete End If Next i End With End Sub
说明:
- 倒序遍历图例项是为了避免删除操作导致后续项的索引错乱,确保所有符合条件的项都能被处理。
- 可根据实际图例项的名称调整判断条件,精准删除不需要的空白项。
方法二:调整数据源范围(更高效)
如果年份列(H列)不需要作为图表的数据系列,直接修改数据源范围,排除年份列:
Option Explicit Sub GraphOn() Sheet1.Activate If ActiveSheet.ChartObjects.Count > 0 Then Sheet1.ChartObjects.Delete End If ' 只选择有数据的列(I2:L49),排除年份列 Sheet1.Range("I2:L49").Select Sheet1.Shapes.AddChart2(227, xlLine).Select With Sheet1.ChartObjects(1).Chart .HasTitle = True .ChartTitle.Caption = "=DoNotModify!R2C15" End With End Sub
说明:这种方法从根源上避免了空系列被添加到图表中,代码更简洁,运行效率也更高。
内容的提问来源于stack exchange,提问作者Carl
相关产品推荐
相关产品推荐

