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
Ответы
Ответ 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/