尝试从 Excel VBA 中删除 PowerPoint 幻灯片中的所有图表对象时出错
Error when trying to delete all chart objects in a PowerPoint Slide from Excel VBA
我有一个用作数据库的 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
每当您循环遍历 VBA 中的一组对象并打算删除其中一个或多个对象时,您需要使用步骤 -1 向后计数,因此您的循环应该像这样开始:
For i = PPT.ActivePresentation.Slides(SlideNum).Shapes.Count to 1 Step -1
我有一个用作数据库的 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
每当您循环遍历 VBA 中的一组对象并打算删除其中一个或多个对象时,您需要使用步骤 -1 向后计数,因此您的循环应该像这样开始:
For i = PPT.ActivePresentation.Slides(SlideNum).Shapes.Count to 1 Step -1