Тема: Как определить присвоен ли объект переменной

Как определить присвоен ли объект(значение)  переменной:
Dim mark_ent As AcadEntity
методы IsEmpty и IsNull не работают.
Иными словами: mark_ent "IsNothing" ("not set variable"), так вот как звучит "IsNothing" по-автокадовски?

Re: Как определить присвоен ли объект переменной

Насколько я понимаю, здесь следует применять  именно функцию IsEmpty:
Dim MyVar
MyCheck = IsEmpty(MyVar) - возвращает True
В описании сказано, что функция IsEmpty возвращает разумную информацию только для аргументов типа Variant
Т. е. не мешало бы задать тип MyVar в явном виде:
Dim MyVar as Variant.
Попробуйте ...

Re: Как определить присвоен ли объект переменной

If mark_ent Is Nothing Then
    Debug.Print "Не присвоено"
Else
    Debug.Print "Присвоено"
End If

Re: Как определить присвоен ли объект переменной

Спасибочки

Re: Как определить присвоен ли объект переменной

Выражение Is Nothing применимо только для объектов. Функция IsEmpty - это более универсальное решение:

Dim mark_ent As Variant
If IsEmpty(mark_ent) Then
   MsgBox "mark_ent = Nothing"
End If

Re: Как определить присвоен ли объект переменной

LeonidSN пишет:

Выражение Is Nothing применимо только для объектов

pavel пишет:

Как определить присвоен ли объект(значение) переменной:
Dim mark_ent As AcadEntity

В данном случае IsEmpty вернет False независимо от того присвено ли значение объектной переменной mark_ent, или нет.

Re: Как определить присвоен ли объект переменной

В каком данном случае?
Вот работающий код:

Sub TestIsEmpty()
     Dim mark_ent As Variant
     mark_ent = 100
     If IsEmpty(mark_ent) Then
        MsgBox "mark_ent = Nothing"
     Else
         MsgBox "mark_ent = " & mark_ent
     End If
     Set mark_ent = ThisDrawing
     If IsEmpty(mark_ent) Then
        MsgBox "mark_ent = Nothing"
     Else
         MsgBox "mark_ent = ISAssign!"
     End If
End Sub

Re: Как определить присвоен ли объект переменной

> LeonidSN
Вы читать умеете? У pavel переменная mark_ent объявлена как AcadEntity, то бишь как объектная, и для нее IsEmpty работать не будет по определению. А Вы объявили ее как Variant, естественно все работать будет.
В принципе если работать с АКАДом "из вне", из VB например, то объявление переменных как варианты самый разумный способ, т. к. в этом случае не надо делать ссылки на конкретную библиотеку и, соответственно, привязываться к определенной версии и т. д. и т. п. А зачем это делать, работая в АКАДе "внутри", т. е. на VBA? Чтобы создавать себе трудности и потом их героически преодалевать? По моему скромному мнению это очень большое извращение.

Re: Как определить присвоен ли объект переменной

> BP
Читать я умею, чего и Вам желаю.
Сказано было, что Выражение Is Nothing применимо только для объектов. Функция IsEmpty - это более универсальное решение при условии,да, что переменная объявлена как variant.Вы с чем-то здесь не согласны?
    Вопрос о том, где и когда вообще применять variant - это отдельный разговор.
    Спасибо за разъяснение в каком именно "данном случае", видимо чего-то я недоглядел. Хотя форма этого разъяснения носит несколько ... категоричный характер.