2009-11-17 2 views
3

Если вы посмотрите на этот код (большая часть которого была удалена для упрощения этого вопроса), я начал задаваться вопросом, нужно ли мне утилизировать коллекцию или класс, который я использовал.Когда мне нужно удалять объекты в VBA

Option Explicit  
Private terminals As Collection 

Sub BuildTerminalSummary() 
    Dim terminal As clsTerminal 
    Call LoadTerminals 
    For Each terminal in terminals 
    ...Do work here 
    Next terminal 

    Set terminals = Nothing 

End Sub 

Private Sub LoadTerminals() 
    Do 
    Set terminal = New clsTerminal 

    ...Do work here 

    'Add terminal to terminals collection 
    terminals.Add terminal, key 

    Loop Until endCondition 
End Sub 

При работе с VBA, когда я должен распоряжаться объектом (если когда-либо)?

ответ

3

Мне кажется, что у вас есть возможность для сбора терминалов в неправильном месте. Есть LoadTerminals вернуть создать терминалы сбора: -

Option Explicit  

Sub BuildTerminalSummary() 

    Dim terminals As Collection 
    Dim terminal As clsTerminal 

    Set terminals = LoadTerminals 

    For Each terminal in terminals 
    ...Do work here 
    Next terminal 

End Sub 

Private Function LoadTerminals() As Collection 
    Dim terminals As Collection : Set terminals = New Collection 
    Do 
    Set terminal = New clsTerminal 

    '' # ...Do work here 

    terminals.Add terminal, key 

    Loop Until endCondition 

    Set LoadTerminals = terminals 

End Function 

Пока у вас есть переменные нет никакой необходимости особенно «распоряжаться» из них (который я предполагаю, что вы имеете в виду назначение Nothing переменной держит ссылку на них.