0

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

“用户”对象如下所示:

用户

-姓名

-事件 [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

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

4

1 回答 1

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
于 2013-07-29T22:28:29.383 回答