2011-10-11 37 views
12

Tôi nhận được Lỗi Trình biên dịch của VBA Excel: Đối tượng được yêu cầu'-Lỗi trong dòng được đánh dấu. Tôi không hiểu lý do.VBA Excel: Biên dịch Lỗi: Đối tượng được yêu cầu?

BTW: Chúc Excel sẽ hỗ trợ ngôn ngữ Net mà không cần trình bao bọc.

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 

Trả lời

19

Set là dành cho sự phân công của các đối tượng, người dùng xác định loại được xử lý giống như một biến thông thường để sử dụng = để gán.

Ngoài ra (gây nhầm lẫn); Dim Data, refData As Inherit chỉ khai báo refData loại Inherit để khai báo cả hai trên một dòng bạn phải; Dim Data As Inherit, refData As Inherit

+0

+1, tôi đã bỏ qua định nghĩa của 'Inherit'at cái nhìn đầu tiên. –

3
Dim Data, refData As Inherit 

tuyên bố Data như Variant, chỉ refData như Inherit.

Dim Data As Inherit, refData As Inherit 

thực hiện những gì bạn muốn. Cú pháp VBA không phải là "thông thường" ở đây, tôi đã thấy lỗi này hàng chục lần. EDIT: tất nhiên, bạn sẽ phải bỏ ra Set trong nhiệm vụ, kể từ Inherit là một loại người dùng xác định.

Nếu bạn đang tìm kiếm một miễn phí và dễ sử dụng tích hợp .NET cho Excel, nhìn vào Excel-DNA:

http://exceldna.codeplex.com/

Các vấn đề liên quan