全局variables在Projectclosures后丢失它的值

我有一个集合作为一个全局variables,这将有他们的项目任务对象。

我的macros的结构如下:

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 

正如我在评论中提到的那样,在closures项目之后,从任务到TaskCollection的位置,TaskCollection会丢失它的值。 奇怪的是,它保持了以前的对象数量,但它们都是空的;

我尝试在GetData函数中本地创build一个集合对象,然后将其传递到TaskCollection全局variables中,但效果相同。

Task添加到集合时,您正在添加对对象的引用。 只要这些引用对象存在,这些引用就具有含义 。 这些对象在项目closures时被销毁。

如果你想使用他们的数据,你将需要使用值types( StringInteger等)复制它,而不是引用对象。 或者,您可以保持项目打开,直到完成使用对象。