vba - 如何使用 VBA 从 Excel 图表中删除一个系列

标签 vba excel charts excel-2003

我正在尝试使用 VBA 从 Excel 2003 中的图表中删除空系列。我看到其他人过去也遇到过这个问题,我已经尝试了他们帖子中提到的所有方法,但一直找不到任何有效的方法。

图表中有 14 个系列,其中 3 到 9 个可以为空。空的总是在系列 4 - 12 之间。

我已经尝试了一些代码变体,但主要是这样:

Sheets("chart-1").Select
ActiveChart.PlotArea.Select
For i = 12 To 4 Step -1
    Dim theSeries As Series
    MsgBox (ActiveChart.SeriesCollection(i).Name)
    Set theSeries = ActiveChart.SeriesCollection(i)
    MsgBox (theSeries.Name)
    theSeries.Delete
Next

我可以为图表成功运行一次,但所有后续循环都失败并出现无法获取 Series 类的 Name 属性错误。调用 .Name 失败。

我能够通过直接插入整数来让它工作,但它只会对除 1 以外的所有整数运行一次。它会为 Series(1) 运行多次。

例如,如果我简单地调用:ActiveChart.SeriesCollection(1).Delete,那么该系列将被删除,但如果我随后使用另一个整数(4、9、12)运行它,它就不会运行。它将再次为 1 工作,但仅 1。它也将与其他整数(比如 4)一起工作一次,但即使我将整数更改为 1 或保持为 4,或将其更改为其他整数,所有后续调用都将失败数。

行为真的很奇怪。

任何想法将不胜感激。我不能简单地重复调用 ActiveChart.SeriesCollection(1).Delete,因为前 3 个系列总是非空的。

谢谢。

** 更新**

我刚刚手动执行了一个测试:

Sheets("ch-v2-12mth").Select
ActiveChart.PlotArea.Select
MsgBox (ActiveChart.SeriesCollection(1).Name)

我在 SeriesCollection 中循环尝试数字 1 - 16(图表中只有 14 个系列)以查看结果。 1 - 3 工作正常 4 - 13 错误 无法获取 Series 类的 Name 属性 14 工作正常 15 - 16 错误,对象 '_Chart' 的方法 'SeriesCollection' 失败 <- 鉴于图表中的系列数,这不足为奇。

这种行为让我认为 Excel 存在错误。还有其他想法吗?

最佳答案

当您从图表中删除所有 系列时,Excel 中存在错误。我的解决方法是始终在图表中至少保留一个系列(即使其中没​​有数据)。这似乎对我有用。

刚想到另一件事。当你删除一个系列时,所有剩余系列的索引都会减少一个,所以你不能通过从 1 循环到系列数来删除它们。您可以做的是有一个 do 循环删除它们,直到 SeriesCollection.Count = 0(或 1,请参阅我之前的评论)。或者一个向后迭代并始终​​删除最后一个系列的 for 循环(即 SeriesCollection(SeriesCollection.Count).Delete

关于vba - 如何使用 VBA 从 Excel 图表中删除一个系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11883389/

相关文章:

javascript - 使用 JavaScript 打开受密码保护的 Excel 工作簿

excel - 查找值在哪个(多个)列表中

vba - 从 VBA 组合框中删除重复项

javascript - 将 mouseout 事件处理程序添加到 Chart.js 中的图例

vba - 忽略拼写检查中的文本框

excel - 在 VBA 中重新调整多维数组的两个维度(为什么这里的解决方案不起作用)

SQL-Server 用 NULL 值替换空单元格

javascript - 没有 jQuery 和光标绘图的交互式 javascript 图表

javascript - 在不改变高度的情况下改变 chart.js 图表的宽度

vba - Excel VBA : Listbox Error when assigning Linked Cell