2011-10-11 47 views
12

VBAエクセル 'コンパイラエラー:オブジェクトが必要です' - マークされた行にエラーがあります。 私はその理由を理解していません。VBA Excel:コンパイルエラー:オブジェクトが必要ですか?

ところで: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 

答えて

19

Setは、オブジェクトの割り当てにある、ユーザー定義型が処理されます通常の変数のように=を使用して割り当てます。

また(紛らわしい); Dim Data, refData As Inheritは、タイプのrefDataを宣言するだけで、両方を1行で宣言する必要があります。 Dim Data As Inherit, refData As Inherit

+0

+1、私は 'Inherit'の最初の一見の定義を見落としました。 –

3
Dim Data, refData As Inherit 

のみrefDataInheritとして、VariantとしてDataを宣言します。

Dim Data As Inherit, refData As Inherit 

あなたは何をしますか? VBA構文はここでは「常識」ではなく、このエラーは何十回も見たことがあります。編集:もちろん、Inheritはユーザ定義タイプなので、割り当てにSetを残す必要があります。

あなたは自由やExcelの.NETの統合を使用して簡単に探している場合、Excel-DNAを見て:

http://exceldna.codeplex.com/

関連する問題