Проблема в том, что If TypeName(Application.Selection) = "Firestop" Then
никогда не бывает правдой. Взгляните на функцию TypeName не возвращает имя Application.Selection
, но вместо этого возвращает значение type Application.Selection
. Здесь, вероятно, возвращается Object
, потому что фигура является объектом.
На самом деле имена являются уникальными. Вы не можете добавить 2 фигуры с одинаковыми именами. Вот почему ActiveSheet.Shapes("Firestop").Delete
удаляет только одну фигуру.
Кажется, есть ошибка, что при копировании именованной фигуры существуют 2 фигуры с одинаковыми именами (что не должно быть возможным). Вы можете обойти это, удалив эту фигуру в al oop, пока не получите ошибку (фигура с таким именем не останется).
On Error Resume Next
Do
ActiveSheet.Shapes("Firestop").Delete
If Err.Number <> 0 Then Exit Do
Loop
On Error GoTo 0 'don't forget this statement after the loop