我有一个集合作为全局变量,其中将包含Project Task对象。
我的宏的结构如下:
Public TaskCollection As Collection
Sub Main()
Set TaskCollection = New Collection
GetData(List of project paths)
For Each task in TaskCollection
//ProcessTask()
Next
End Sub
Function GetData(List of project paths)
for each project path
Open project p
//do something else with the opened project...
for each Task t in p.Tasks
TaskCollection.Add t
next
Close project p
//AFTER THIS, the TaskCollection object will be totally empty
next
End Function
正如我在评论中提到的,关闭项目后,从那里将任务放入TaskCollection中,TaskCollection失去了它的值。奇怪的是,它保留了以前拥有的对象数量,但是它们都是空的。
我试图在GetData函数中本地创建一个收集对象,然后最后在TaskCollection全局变量中传递它,但是效果是相同的。
最佳答案
将Task
添加到Collection
时,将添加对对象的引用。只要它们引用的对象存在,这些引用才有意义。当项目关闭时,这些对象将被销毁。
如果要使用其数据,则需要使用值类型(String
,Integer
等)复制它,而不是引用对象。或者,您可以保持项目打开,直到使用完对象为止。