尝试从Excel VBA中删除PowerPoint幻灯片中的所有图表对象时出错

时间:2016-05-19 05:25:07

标签: excel-vba powerpoint-vba vba excel

我有一个作为数据库服务的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

1 个答案:

答案 0 :(得分:2)

每当你在VBA中循环遍历一组对象而意图删除其中一个或多个时,你需要用步骤-1向后计数,所以你的循环应该像这样开始:

For i = PPT.ActivePresentation.Slides(SlideNum).Shapes.Count to 1 Step -1