我有一个集合作为全局变量,其中包含项目任务对象。
我的宏的结构如下:
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全局变量中,但是效果是一样的。
最佳答案
将任务
添加到集合
时,您正在添加对对象的引用。这些仅当它们引用的对象存在时才有意义。当项目关闭时,这些对象将被销毁。
如果您想使用它们的数据,则需要使用值类型(String
、Integer
等)复制数据,而不是引用对象。或者,您可以保持项目打开,直到使用完对象为止。
关于vba - 项目关闭后全局变量失去其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30511448/