vba

您所在的位置:网站首页 excel图表系列1 vba

vba

2024-06-24 08:24| 来源: 网络整理| 查看: 265

我正在尝试使用 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/



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3