项目关闭后全局变量失去其价值

Global variable losing it's value after Project is closed

我有一个集合作为全局变量,其中包含项目任务对象。

我的宏结构如下:

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 时,您正在添加对对象的引用。这些 引用只有在它们引用的对象存在时才有意义 。这些对象在项目关闭时被销毁。

如果您想使用他们的数据,您需要使用值类型(StringInteger 等)复制它,而不是引用对象。或者,您可以让项目保持打开状态,直到您使用完这些对象。