Подтвердить что ты не робот

VBA Excel: ошибка компиляции: требуется объект?

Я получаю ошибку компилятора VBA Excel: требуется объект. - Ошибка в отмеченной строке. Я не понимаю причину.

BTW: Wish Excel будет поддерживать язык .NET без необходимости использования обертки.

Option Explicit

Public Type Inherit
    ReqId As Integer
    Parent As Integer
    Depth As Integer
    Path As String
End Type

Sub test()
    Dim MyStructure() As Inherit
    ReDim MyStructure(1 To 1000)

    MyStructure(1).ReqId = 1

    Dim Data, refData As Inherit
    Set Data = MyStructure(1)  ' <---! 
    Beep

End Sub
4b9b3361

Ответ 1

Set предназначен для назначения объектов, пользовательский тип обрабатывается как регулярная переменная, поэтому используйте = для назначения.

Также (смущающе); Dim Data, refData As Inherit объявляет только refData типа Inherit, чтобы объявить их как на одной строке; Dim Data As Inherit, refData As Inherit

Ответ 2

Dim Data, refData As Inherit

объявляет Data как Variant, только refData как Inherit.

Dim Data As Inherit, refData As Inherit

делает то, что вы хотите. Синтаксис VBA здесь не "здравый смысл", я видел эту ошибку десятки раз. EDIT: конечно, вам придется оставить Set в задании, так как Inherit - это определенный пользователем тип.

Если вы ищете бесплатную и удобную интеграцию .NET для Excel, посмотрите на Excel-DNA:

http://exceldna.codeplex.com/