何时需要在VBA中处理对象

3

在查看这段代码时(为了简化问题,大部分代码已被删除),我开始想知道是否需要处理我使用的集合或类。

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时,什么时候需要释放对象(如果有必要的话)?
1个回答

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赋值给持有对它们引用的变量)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接