我有这个PPT vba脚本来删除每张幻灯片左下角区域中的所有形状。它有效,但有时会在该区域留下一个形状。如果我再次运行它将摆脱它,但我不想要运行它两次!我该如何解决这个问题?
=
答案 0 :(得分:0)
当您遍历集合(形状,幻灯片等)并沿途删除项目时,For / Each循环将不会按预期运行。
相反,使用(在这种情况下)
对于x = oSld.Shapes.Count为1步-1
从集合的末尾删除到开头而不是从开头到结尾。
为什么?
假设集合中有三个项目:
VBA以其内部For / Each计数器设置为1开始 第一项符合您的条件,您将其删除 VBA将其内部For / Each计数器增加到2 由于您删除了一个项目,因此集合中只剩下两个项目,因此VBA查看第二个项目(用作第三个项目)并删除它。 VBA将其内部计数器增加到3,但您已删除了三个原始项目中的前两个,因此集合中只有一个项目;没有第三项,所以过去的第3项永远不会被看到。
[如果有人可以提供更好/更明确的解释,那就请它。]