Как использовать пользовательский тип в функции?

Следующий тривиальный пример не работает:

Public Type MyType
    a As Double
    b As Integer
End Type

Function Test() As Variant
    Dim x As MyType
    Test = 2
End Function

Ошибка компиляции: определяемый пользователем тип не определен

Как мне «определить» тип?


person quant    schedule 16.04.2016    source источник
comment
Определение типа является объявлением. Так что это должно быть в объявлениях перед первой функцией или подпрограммой. См. msdn.microsoft.com/en-us. /library/dd897495%28v=office.12%29.aspx   -  person Axel Richter    schedule 16.04.2016
comment
@AxelRichter Да, ты прав. В моем реальном коде у меня была функция над объявлением. Я не думал, что это уместно при публикации вопроса, но, как вы указываете, это так.   -  person quant    schedule 16.04.2016


Ответы (1)


ваш код отлично компилируется в моем excel 2010

в любом случае это было бы бесполезно для использования пользовательского типа

здесь следует «полный» пример

Option Explicit

Public Type MyType
    a As Double
    b As Integer
End Type

Sub main()
    Dim x As MyType

    'initialize fields of your type
    x.a = 1.2
    x.b = 1

    MsgBox Test(x)
End Sub


Function Test(x As MyType) As Variant

    Test = x.a + x.b

End Function
person user3598756    schedule 16.04.2016