我有一个作为数据库服务的Excel文件。 在排序和修改Excel文件中的数据后,我将更新的数据复制到PowerPoint幻灯片。 在从更新的工作表中复制所有图表对象之前,我想从PowerPoint幻灯片中删除旧图表。
我使用了下面的代码,但是,在尝试删除幻灯片中的最后一个图表时收到错误消息。 错误消息是" Shapes.Item:整数超出范围。 25不是索引的有效范围1到24 "。
Dim SlideNum, i As Integer
SlideNum = ActiveSheet.Cells(5, 2)
For i = 1 To PPT.ActivePresentation.Slides(SlideNum).Shapes.Count
' if current slide object is a chart, delete it
If PPT.ActivePresentation.Slides(SlideNum).Shapes.Item(i).HasChart Then
PPT.ActivePresentation.Slides(SlideNum).Shapes.Item(i).Delete
End If
Next i
答案 0 :(得分:2)
每当你在VBA中循环遍历一组对象而意图删除其中一个或多个时,你需要用步骤-1向后计数,所以你的循环应该像这样开始:
For i = PPT.ActivePresentation.Slides(SlideNum).Shapes.Count to 1 Step -1