0

だから私は基本的にカレンダーからのデータを含むExcelの行のリストを持っています。それらはすべてそれらを作成した各ユーザーです。ユーザーごとにオブジェクトのコレクションを作成しています。個人を最初のコレクションに追加した後、ユーザー オブジェクト内に「Events」という別のコレクションを作成します。これは、イベントの種類と日付が保存される場所です。コレクション「イベント」に配列を追加するのに問題があります。

「ユーザー」オブジェクトは次のようになります。

ユーザー

-名前

- イベント [イベント 1、イベント 2、イベント 3、...、など]

Object variable or With variable not set」というエラーが表示されます。このエラーが発生する必要な 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 に答える