gpt4 book ai didi

excel - "For"循环不删除工作表中的所有图表

转载 作者:行者123 更新时间:2023-12-02 17:31:50 24 4
gpt4 key购买 nike

我在一张工作表上创建了 9 个新图表,它们被命名为 Chart67 到 Chart 75,因为还有 66 个其他图表已修复。但在创建图表之前,如果出于某种原因它们可能存在于工作表上,我想将其删除。

下面的代码不执行此操作,仅删除一组图表(67、69、71、73 和 75),然后给出错误“对象‘_Worksheet’的方法‘ChartObjects’失败”。每次我启动代码时,它都会删除更多图表,但并非所有图表都会删除,并且会再次出现相同的错误。

但是,如果我通过简单地注释掉“.delete”行来测试代码,那么我就会在调试窗口中获得我打算删除的所有图表,而不会出现任何错误。

谁能向我解释一下发生了什么?我也一步步调试,发现当删除功能到位时,屏幕会闪烁,然后选择只是跳转一个图表。

(在我发布问题之前,我又测试了一件事情,对我来说,For 循环似乎记住了第一个值 (67),并且由于它不再存在,所以它会跳过 68 等等)-> 但是为什么?我应该如何进行?

谢谢

Public Sub test()
Dim wsCR As Worksheet: Set wsCR = ThisWorkbook.Worksheets("Charts")
Dim i As Long

For i = 67 To wsCR.ChartObjects.count
wsCR.ChartObjects(i).Activate
With ActiveChart
Debug.Print .Parent.Name
'.Parent.Delete
End With
Next

End Sub

最佳答案

第一次循环:i = 67时,您将删除图表67。
发生转变:现在您的图表名称将相应发生变化。 68 变为 6769 变为 68。等等
下一个循环:现在您处于i = 68。但请注意,您的图表 68 现在对应的值为 67。要删除的图表将是与 i = 68 关联的图表,实际上是图表 #69当您最初开始循环时(将跳过 68,这与您描述的结果一致)。

这就是删除所有其他图表的原因。

您可以尝试向后退来解决此问题,因为删除不会改变任何内容:

For i = wsCR.ChartObjects.count to 67 Step - 1
wsCR.ChartObjects(i).Delete
Next i

关于excel - "For"循环不删除工作表中的所有图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51028205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com