Я задавался вопросом об этом, на слове 2007 это не сработало, как я ожидал, а на слове 2016 это сработало. Дай мне объяснить:
У меня есть цикл
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) как объект и удалил его внутри цикла после вставки нового.
- Но что, если я просто установлю тот, который вместо этого хочу удалить, невидимым? Вставленный будет обработан в цикле?
Я также подумал о том, чтобы создать коллекцию всех фигур, которые я хотел удалить, а затем зациклить внутри коллекции, чтобы удалить и добавить новые формы, чтобы убедиться, что он не будет зацикливаться на фигуре, вставленной в ее середину. .
Спасибо за любые идеи по этому вопросу