2011-10-11 59 views
12

我得到一个VBA Excel'编译器错误:对象required'-标记行错误。 我不明白原因。VBA Excel:编译错误:对象是否需要?

顺便说一句:祝愿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 

回答

19

Set是对象的分配,用户定义类型被处理像一个常规变量,所以使用=来分配。

(令人困惑地); Dim Data, refData As Inherit只声明refData类型Inherit宣布他们都在一条线上,你必须; Dim Data As Inherit, refData As Inherit

+0

+1,我忽略了第一眼看到'继承'的定义。 –

3
Dim Data, refData As Inherit 

声明DataVariant,只有refDataInherit

Dim Data As Inherit, refData As Inherit 

做你想做的。 VBA语法在这里不是“常识”,我看过这个错误几十次。编辑:当然,你将不得不在Set在作业,因为Inherit是一个用户定义的类型。

如果你正在寻找一个自由和易于使用的Excel的.NET集成,看看Excel的DNA:

http://exceldna.codeplex.com/