2011-10-11 123 views
12

Aparece un VBA Excel 'Error del compilador: Objeto requerido'-Error en la línea marcada. No entiendo la razón.VBA Excel: Error de compilación: ¿se requiere un objeto?

BTW: Wish Excel admitiría un lenguaje .Net sin necesidad de envoltorio.

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 

Respuesta

19

Set es para la asignación de objetos, un tipo definido por el usuario es tratada como una variable regular así que use = para asignar.

También (confusamente); Dim Data, refData As Inherit solo declara refData de tipo Inherit para declararlos en una línea; Dim Data As Inherit, refData As Inherit

+0

+1, pasé por alto la definición de 'Inherit' a primera vista. –

3
Dim Data, refData As Inherit 

declara Data como Variant, solamente refData como Inherit.

Dim Data As Inherit, refData As Inherit 

hace lo que quiere. La sintaxis de VBA no es "de sentido común" aquí, he visto este error docenas de veces. EDITAR: por supuesto, deberá omitir Set en la asignación, ya que Inherit es un tipo definido por el usuario.

Si usted está buscando un libre y fácil de utilizar la integración de .NET para Excel, mira Excel-ADN:

http://exceldna.codeplex.com/