删除形状宏需要运行两次才能工作

时间:2018-03-20 07:27:35

标签: vba powerpoint powerpoint-vba

我有这个PPT vba脚本来删除每张幻灯片左下角区域中的所有形状。它有效,但有时会在该区域留下一个形状。如果我再次运行它将摆脱它,但我不想要运行它两次!我该如何解决这个问题?

=

1 个答案:

答案 0 :(得分:0)

当您遍历集合(形状,幻灯片等)并沿途删除项目时,For / Each循环将不会按预期运行。

相反,使用(在这种情况下)

对于x = oSld.Shapes.Count为1步-1

从集合的末尾删除到开头而不是从开头到结尾。

为什么?

假设集合中有三个项目:

VBA以其内部For / Each计数器设置为1开始 第一项符合您的条件,您将其删除 VBA将其内部For / Each计数器增加到2 由于您删除了一个项目,因此集合中只剩下两个项目,因此VBA查看第二个项目(用作第三个项目)并删除它。 VBA将其内部计数器增加到3,但您已删除了三个原始项目中的前两个,因此集合中只有一个项目;没有第三项,所以过去的第3项永远不会被看到。

[如果有人可以提供更好/更明确的解释,那就请它。]