【发布时间】:2019-11-05 03:52:38
【问题描述】:
我想知道这个问题,在 2007 年这并没有像我预期的那样工作,而在 2016 年它确实如此。让我解释一下:
我有一个 for 循环
For i = ActiveDocument.Sections(1).Headers(1).Shapes.count To 1 Step -1
if ActiveDocument.Sections(1).Headers(1).Shapes(i) matches condition, then
ActiveDocument.Sections(1).Headers(1).Shapes(i).delete
set newshape = ActiveDocument.Sections(1).Headers(1).Shapes.Addpicture(new picture, bla, bla, bla..)
end if
next i
在这种情况下,循环是否会遇到新添加的形状,并循环通过它?还是会忽略它?
为了解决这个问题,我很难将 ActiveDocument.Sections(1).Headers(1).Shapes(i) 设置为对象,并在插入新对象后在循环内将其删除。
- 但是如果我只是将要删除的那一项设置为不可见呢?插入的会在循环中处理吗?
我还考虑过将所有我想删除的形状集合在一起,然后在集合中循环以删除和添加新形状,以确保他不会循环插入中间的形状.
感谢您对此问题的任何见解
【问题讨论】:
-
为什么不自己试试呢?如果遇到要解决的问题,请提出问题...
-
我试过了,word 2007 和 word 2016 得到了不同的结果。
-
反向循环不会遇到新添加的形状,但是如果您进入正向循环(因为新添加的形状将获得最高阶的索引),则可能会遇到一些最高阶的新形状环形。在 2007 年进行了实验,发现工作正常(仅在反向循环中)。在前向循环中,一些新添加的形状被替换,而旧形状保持不变。由于反向循环工作正常,似乎没有必要让它不可见。正如 Cindy Meister 所说,您可以自己尝试(可能没有条件)。
-
请检查您是否在 2007 年从事前向循环工作。