在查看这段代码时(为了简化这个问题,大部分代码都被删除了),我开始想知道是否需要处理我使用的集合或类。
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时,我应该在什么时候释放对象(如果有的话)?
发布于 2009-11-18 03:54:29
在我看来,您似乎将终端集合的作用域放在了错误的位置。让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赋值给持有对它们的引用的变量。
https://stackoverflow.com/questions/1751258
复制相似问题