用户定义的对象在数组VBA中

正如主题行指出的,我试图存储我写入一个数组类的对象。 VBA给了我令人沮丧的错误:

“对象variables或块variables未设置”

我很确定我正确地定义了我的对象,局部variables显示对象是我定义的types,并且所有的字段都被填充了,所以我无法弄清楚我的问题在哪里。

Dim Type1(2 To 250) As myClass Dim Type2(2 To 250) As myClass Dim Type3(2 To 250) As myClass Dim temp_obj As myClass Dim foo As String For i = 2 To 250 Set temp_obj = New myClass With temp_obj .field1 = Worksheets("Sheet1").Rows(i).Columns(2).Value .field2 = Worksheets("Sheet1").Rows(i).Columns(3).Value .field3 = Worksheets("sheet1").Rows(i).Columns(4).Value .field4 = Worksheets("Sheet1").Rows(i).Columns(5).Value End With foo = Worksheets("Sheet1").Rows(i).Columns(1).Value If foo = "Type1" Then Type1(i) = temp_obj ElseIf foo = "Type2" Then Type2(i) = temp_obj ElseIf foo = "Type3" Then Type3(i) = temp_obj End If Next i 

我的课堂看起来像这样:

 Private pfield1 As Single Private pfield2 As Integer Private pfield3 As String Private pfield4 As String Public Property Get field1() As Single field1 = pfield1 End Property Public Property Get field2() As Integer field2 = pfield2 End Property Public Property Get field3() As String field3 = pfield3 End Property Public Property Get field4() As String field4 = pfield4 End Property Public Property Let field1(p As Single) pfield1 = p End Property Public Property Let field2(p As Integer) pfield2 = p End Property Public Property Let field3(p As String) pfield3 = p End Property Public Property Let field4(p As String) pfield4 = p End Property 

在底部尝试更改:

 If foo = "Type1" Then Set Type1(i) = temp_obj ElseIf foo = "Type2" Then Set Type2(i) = temp_obj ElseIf foo = "Type3" Then Set Type3(i) = temp_obj End If