2
我有一个集合作为一个全局变量,其中会包含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全局变量的末尾,但效果是一样的。
哦,这很有道理!感谢拜伦的答案。有没有办法将整个对象引用复制到项目关闭时不会死亡的对象中? – Laureant
你正陷入一片混乱。该技术被称为“深层复制”,您可以将所有数据放入一个新对象中。不确定VBA在这方面提供了什么。您将更好地创建自己的课程,并只移动想要的数据。问题成为如何处理'Task'内存在的引用之一。你也复制所有这些吗?他们的参考呢?如果你知道你想要的属性,只需抓住它们并将它们存储在某个地方。这不太可能你需要它。 –