2011-10-11 56 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/