所以我在PowerPoint上有一个幻灯片,我有一个宏应该删除名称以“element”开头的所有形状。它确实删除了我想要的形状,但不是全部。我必须再次运行宏,然后删除另一堆宏。所以似乎不是一次性删除所有内容。
有人能帮助我吗?这是宏:
Sub course_reset()
Dim shp As Shape
For Each shp In Slide36.Shapes
If Left(shp.Name, 7) = "element" Then shp.Delete
Next
End Sub
答案 0 :(得分:2)
这是因为迭代的工作原理。举例说明:
解决此问题的最简单方法是从集合的 end 开始使用For循环。
For i = Slide36.Shapes.Count To 1 Step -1
然后当你删除时,你完全绕过间隙闭包。
答案 1 :(得分:1)
<强>解强>
我只是想通过试验得出如果我创建一个变量作为ShapeRange,将其设置为Slide36.Slides.Range,然后为ShapeRange执行每个变量,它的工作原理!谢谢你的快速回复。
所以代码就像这样:
Sub course_reset()
Dim shp As Shape
Dim shprng As ShapeRange
Set shprng = Slide36.Shapes.Range
For Each shp In shprng
If Left(shp.Name, 7) = "element" Then shp.Delete
Next
End Sub