2009-11-17 33 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的变量。

相关问题