vba - 对于每个形状宏不会在 PowerPoint VBA 中一次删除所有形状
问题描述
所以我在 PowerPoint 上有一张幻灯片,其中有一个宏,它应该删除所有名称以“元素”开头的形状。它确实删除了我想要的形状,但不是全部。我必须再次运行宏,然后它会删除另一组宏。所以它似乎不会一次全部删除。
有人能帮我吗?这是宏:
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
解决方案
其根本原因在于迭代的工作方式。为了显示:
- 假设您在位置 42。该位置的对象符合删除条件。
- 你删除对象。
- 对象 43 现在是对象 42,44 是 43,以此类推,一直向下,以缩小差距。
- 您现在移动到位置 43,并跳过了检查旧对象 43。
解决此问题的最简单方法是使用从集合末尾开始的 For 循环。
For i = Slide36.Shapes.Count To 1 Step -1
然后,当您删除时,您完全绕过了间隙闭合。
推荐阅读
- r - 如何优化此 R 脚本以使用尽可能少的 CPU 和内存
- javascript - 无法在 Node JS 应用程序中连接 MongoDB
- macos - 在 Mac 上升级到 Catalina 后无法打开 Typinator
- algolia - 选择后如何显示城市,州?
- docker - Docker在向容器添加网络时突然删除卷
- vba - PowerPoint VBA:识别/替换 DokChampa 字体中的老挝语文本
- git - 去掉 Git lfs 链接到文件,直接添加到 git
- mysql - Laravel 中具有不同类型幻灯片的滑块的数据库模式
- jquery - pickadate.js 禁用第二个星期六或禁用一个月中任何选定周的星期六
- css - JavaFX DatePicker 产生严重:无法加载皮肤“com.sun.javafx.scene.control.skin.TextFieldSkin”