Когда мне нужно располагать объекты в VBA - PullRequest
3 голосов
/ 17 ноября 2009

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

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 голосов
/ 17 ноября 2009

Мне кажется, что у вас есть возможности для сбора терминалов не в том месте. Пусть 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 переменной, содержащей ссылку на них.

...