我正在尝试使用 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
我可以为图表成功运行一次,但所有后续循环都失败并出现Unable to get the Name property of the Series class
错误。它在调用 .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 出错Unable to get the Name property of the Series class
14 工作正常 15 - 16 出错Method 'SeriesCollection' of object '_Chart' failed
<- 考虑到图表中的系列数量,这并不奇怪。
这种行为让我认为 Excel 存在错误。还有其他想法吗?