我对此很纳闷,在单词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)设置为对象,并在插入新对象后将其在循环内删除。
我还考虑过对所有要删除的形状进行收集,然后在收集物中循环以删除并添加新形状,以确保他不会对插入其中的形状进行循环
感谢您对此问题的见识
答案 0 :(得分:0)
除了Cindy所说的那样,您的代码将更加高效,并且易于遵循:
With ActiveDocument.Sections(1).Headers(1)
For i = .Shapes.Count To 1 Step -1
If .Shapes(i) matches condition Then
.Shapes(i).Delete
Set newshape = .Shapes.AddPicture(new picture, bla, bla, bla)
End If
Next i
End With