在VBA中将数组添加到Collection

时间:2013-07-29 20:53:18

标签: arrays vba collections

所以我基本上有一个excel中的行列表,其中包含日历中的数据,所有这些行都包含每个创建它们的用户。我正在为每个用户创建一个对象集合。将个人添加到第一个集合后,我在用户对象中有另一个名为“Events”的集合。这是存储事件类型和日期的位置。我在将数组添加到Collection“Events”时遇到了问题。

“user”对象如下所示:

  

用户

     

-Name

     

-Events [event1,event2,event3,...等]

我收到“对象变量或未设置变量”的错误以下是在嵌套的if和else if语句结尾处从下面的代码中获取的行给出此错误:

  

temp.Events.Add arr1

     

emp2.​​Events.Add arr2

代码:

Do Until IsEmpty(Cells(i, 5))
Dim name As String
'grab name in cell
name = Cells(i, 5)
'if first list item, add new user
If list.Count = 0 Then
    Dim emp1 As New User
    emp1.name = name
    list.Add emp1
Else
    'traverse through list and search for same name
    For j = 1 To list.Count
        'if name is present, add event data to user object
        If list.Item(j).name = name Then
            Dim temp As New User
            Set temp = list.Item(j)
            Dim arr1(2) As String
            arr1(1) = Cells(i, 3)
            arr1(2) = Cells(i, 1)
            temp.Events.Add arr1
        'if name is not present, add new user and event data to new user object
        ElseIf j = list.Count Then
            Dim emp2 As New User
            emp2.name = name
            Dim arr2(2) As String
            arr2(1) = Cells(i, 3)
            arr2(2) = Cells(i, 1)
            emp2.Events.Add arr2
            list.Add emp2
        End If
    Next
End If

    i = i + 1
Loop

如果有更简单的方法可以做到这一点,或者如果无法做到这一点,请指出正确的方向。任何帮助是极大的赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

在User类中添加方法Class_Initialize并初始化变量。现在,只有在使用

时使用的第一个方法才会调用此方法
Dim temp As New User 

在调用对象的方法之前,它仍未初始化。

在使用

之前,您需要使用以下方式初始化它
Dim temp As User
set temp = New User 'now it is initialized

在您的用户类

Private Sub Class_Initialize()
'code here 
End Sub