Какой аналог OLEVariant есть в VBA?

Игнат

В Дельфях есть тип OLEVariant. А какой есть непосредственный аналог в VBA?Заранее благодарен за любую помощь!!!
6 ответов

Игнат

Игнат,Variant


Игнат

13-й квартал,есть такая ситуация.Dim MyCOM As ObjectDim MyResult As VariantSet MyCOM = CreateObject("MY_COM.MY_COMServer")Set MyResult = MyCOM.MyFuncCOM-сервер ("MyCOM ") написан на дельфях. Функция MyFunc возвращает значение типа OLEVariant. При этом в строке "Set MyResult = MyCOM.MyFunc" выводится ошиба Run-time error '13': Type mismatchВ чем здесь может быть проблема?


Игнат

Возможно в Set. Т.к. он применяется, когда нужно присваивать объектные ссылки, хотя по моему тогда должна быть ошибка "объект ожидается"


Игнат

и что потом с результатом OLEVariant должно делаться? может надо объявить :
Dim MyResult As Object


Игнат

Игнат,значит, MyCOM.MyFunc() возвращает не вариант объектного подтипа, и надо применять не оператор Set, а оператор Let.Скажем, следующий пример демонстрирует ошибку, приведённую Вами:
Sub test()
 Dim MyCOM As Object
 Dim MyResult As Variant
 Set MyCOM = CreateObject("Excel.Application")
 Set MyResult = MyCOM.Creator 'Если Set убрать или заменить на Let, ошибки не будет
 Debug.Print Hex$(MyResult)
 Set MyCOM = Nothing
End Sub


Игнат

13-й квартал,это просто фердипердозно, что на этом свете есть такие люди как Вы - всё заработало!!!Всем спасибо!!!