我有一个工作表,在上面创建了9个新图表,它们被命名为Chart67到Chart 75,因为还有66个其他固定图表。但是在创建图表之前,无论出于何种原因,我想删除它们。
下面的代码不起作用,仅删除一组图表(67、69、71、73和75),然后给出错误“对象'_Worksheet'的方法'ChartObjects'失败”。每次我启动代码时,它都会删除其他图表,但又不会全部删除,并且会再次给出相同的错误。
但是,如果我仅通过注释掉“ .delete”行来测试代码,那么我将在调试窗口中获得所有要删除的图表,而不会出现任何错误。
有人可以向我解释发生了什么吗?我还逐步调试了一下,发现删除功能到位后,屏幕会闪烁,然后选择仅会跳出一个图表。
(在我发布问题之前,我还测试了另一件事,在我看来,For循环会记住第一个值(67),因为它不再存在,因此会跳过68,依此类推)->但是为什么?我应该如何进行?
Thx
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
答案 0 :(得分:3)
第一个循环:在i = 67
时,您将删除图表67。
发生移位:现在您的图表名称将相应地移位。 68 goes to 67
。 69 goes to 68
。等
下一个循环:您现在在i = 68
上。但是请注意,您的图表68现在具有对应的值67。要删除的图表将是与i = 68
关联的 new 图表,当您最初开始创建图表时实际上是图表#69。循环(将跳过68,这与您描述的结果一致)。
这就是为什么要删除所有其他图表的原因。
您可以尝试倒退解决此问题,因为删除操作不会改变:
For i = wsCR.ChartObjects.count to 67 Step - 1
wsCR.ChartObjects(i).Delete
Next i
答案 1 :(得分:0)
如果您想使用mutation createAuthor($firstName: String, $lastName: String) {
方法,则可能应该可以:
For Each