VBA и коллекция - нужно добавить экземпляр в ничто, прежде чем добавить в коллекцию? - PullRequest
2 голосов
/ 20 августа 2011

Я пытаюсь добавить объект дважды с измененными значениями для коллекции, но в конце коллекции содержит одинаковые значения для двух элементов. Где я не прав?

Private Sub MySub()
    Dim ClientList As Collection
    Set ClientList = New Collection

    Dim Inst1 As Client

    Set Inst1 = New Client

    Inst1.Code = 1
    Inst1.Name = "First Client"
    'Adding first client
    ClientList.Add Inst1 

    Inst1.Code = 2
    Inst1.Name = "Second Client"
    'Adding second client
    ClientList.Add Inst1

    Set Inst1 = ClientList(1)
    MsgBox Inst1.Name 'Show "Second Client"   

    Set Inst1 = ClientList(2)
    MsgBox Inst1.Name 'Show "Second Client" too   


End Sub

1 Ответ

5 голосов
/ 20 августа 2011

Коллекция хранит ссылку на ваш объект Inst1, вам нужно либо использовать вторую переменную, либо установить существующую переменную = в новый экземпляр

   Private Sub MySub()
        Dim ClientList As Collection
        Set ClientList = New Collection

        Dim Inst1 As Client

        Set Inst1 = New Client

        Inst1.Code = 1
        Inst1.Name = "First Client"
        'Adding first client
        ClientList.Add Inst1 

        'Setting Inst1 to a new instance 
        Set Inst1 = New Client

        Inst1.Code = 2
        Inst1.Name = "Second Client"
        'Adding second client
        ClientList.Add Inst1

        Set Inst1 = ClientList(1)
        MsgBox Inst1.Name 'Show "Second Client"   

        Set Inst1 = ClientList(2)
        MsgBox Inst1.Name 'Show "Second Client" too   


    End Sub
...