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

标签 vba excel ms-project

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

我的宏的结构如下:

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全局变量中,但是效果是一样的。

最佳答案

任务添加到集合时,您正在添加对对象的引用。这些仅当它们引用的对象存在时才有意义。当项目关闭时,这些对象将被销毁。

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

关于vba - 项目关闭后全局变量失去其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30511448/

相关文章:

c# - 我如何从 C# 中的 Excel 工作表中选择特定列?

excel - VBA 将数据从项目复制粘贴到 Excel 中

excel - 删除所有完全空白的行

vba - 如果找到,如何快速搜索然后更新/删除行

excel - 如何将工作表中的图像嵌入 Outlook 电子邮件

java - MS Project Server 2010 Java API

vba - MS(项目)在text10中查找字符串并更改字体颜色

excel - 通过电子邮件发送事件工作簿的压缩版本

java - 如何使用 Apache Calcite 将数据插入 Excel 表?

excel - 如何通过visual basic将excel表格中的图像粘贴到gmail正文中?