- Сообщения
- 588
- Реакции
- 4
Каким образом проверить, существует ли объект, на который ссылается n-й элемент коллекции ?
Объект, на который ссылается n-й элемент коллекции, удаляется пользователем в интерактивном режиме.
Конкретная ситуация:
Методом ShapeRange.Add запихиваю все найденные объекты в глобальный findedShRange As New ShapeRange. Далее пользователь, скажем, удаляет один из таких объектов.
Каким образом определить, что i-й Shape был удалён, т.е. findedShRange(i) не существует ?
При обращении к некоторым свойствам и при вызове некоторых методов findedShRange(i) или findedShRange.Item(i) макрос просто слетает. Логично, поскольку объекта не существует. Но в то же время функция IsEmpty для удалённых объектов возвращает не True, а False, как будто объект существует...
В качестве альтернативы можно использовать обработку ошибок:
Объект, на который ссылается n-й элемент коллекции, удаляется пользователем в интерактивном режиме.
Конкретная ситуация:
Методом ShapeRange.Add запихиваю все найденные объекты в глобальный findedShRange As New ShapeRange. Далее пользователь, скажем, удаляет один из таких объектов.
Каким образом определить, что i-й Shape был удалён, т.е. findedShRange(i) не существует ?
При обращении к некоторым свойствам и при вызове некоторых методов findedShRange(i) или findedShRange.Item(i) макрос просто слетает. Логично, поскольку объекта не существует. Но в то же время функция IsEmpty для удалённых объектов возвращает не True, а False, как будто объект существует...
В качестве альтернативы можно использовать обработку ошибок:
Код:
On Error GoTo DelMsg
findedShRange(findedShIndex).Selected = True
On Error GoTo 0
...
DelMsg: MsgBox <...>
End Sub