Тема: удален ли объект?

Добрый Всем день!
Как проверить на VBA не удален ли графический объект, на который ссылается переменная (глобальная)?
Спасибо.

Re: удален ли объект?

> byrik
If Not myObject IsNothing Then
<< Don't worry, be happy >>
End If
~'J'~

Re: удален ли объект?

Скорее так:
If TypeName(MyObject) <> "Nothing" Then
<< Don't worry, be happy >>
End If
но когда удаляешь объект (команда ACADa delete) - он не удаляется из базы чертежа, поэтому в переменной MyObject  хранится ссылка на объект, а не Noting и данный метод не работает.
какие еще мысли?

Re: удален ли объект?

Вот, кое что навоял... неуверен - может есть и проще варианты.
Можно анализировать состояние объекта Err (это наверное правильнее), но для моих задач вполне хватило варианта ниже

Private Function isDeleted(myObject As AcadEntity) As Boolean
    Dim tObj As AcadEntity
    On Error Resume Next
    Set tObj = ThisDrawing.HandleToObject(myObject.Handle)
    Err.Clear
    If TypeName(tObj) = "Nothing" Then
        isDeleted = True
    Else
        isDeleted = False
    End If
End Function

Re: удален ли объект?

> byrik
Вообще-то хорошей практикой считается обнуление
объектов после удаления или после использования.

Set obj = Nothing

к сожалению, сам грешен - редко использую,
поэтому и "болтаются в чертеже неприколоченные
указатели на объекты" (цитата от VK)
~'J'~

Re: удален ли объект?

> Fatty
Вообще-то я имел ввиду удалением пользователем (интерактивно).
Есть некий объект чертежа, на который ссылается глобальная переменная (для возможности ввода "по умолчанию"), котороая "живет" в течении сессии работы с данным файлом.
Вторая проблема России тут не страшна, а вот с первой приходится бороться :))
Собственно, это защита от него самого....