调用 MS 项目任务的唯一 ID 时出现 Excel VBA 错误

标签 excel vba ms-project

在 Excel 工作表中,我正在使用 VBA 遍历 MS Project 文件中的任务。

我发现我的代码运行良好,直到我遇到一个没有名称但错误让我感到困惑的 MS Project 任务。当我删除这些未命名的任务时,错误就消失了。

我尝试添加一个 if 语句:If prj.Tasks(i).UniqueID Is Nothing Then捕捉这个错误,但我得到一个 Type mismatch错误。

Dim i As Integer
Dim TaskID As Long
Dim ExcelRow As Integer
For i = 1 To prj.Tasks.Count
    TaskID = prj.Tasks(i).UniqueID  'This line is highlighted when I debug
    ExcelRow = GetRowByUniqueID(TaskID)
    Debug.Print ExcelRow

我的错误是未设置对象变量(错误 91)。我对此感到困惑,因为我的印象是所有任务都有一个唯一的 ID。当我在 Microsoft Project 中打开 .mpp 文件时,我可以看到任务没有名称,但在唯一 ID 列中具有唯一 ID。

编辑:我刚刚意识到 prj.Tasks(i).UniqueID 不是问题而是 prj.Tasks(i) 的问题. i时怎么可能没有设置这个变量是否在Tasks的数量范围内?

最佳答案

好吧,我只是想通了。
不知何故,当我遍历所有任务时,其中一些是 Nothing .我真的不明白为什么,但至少,我能够用 if 语句捕获这一点:

If prj.Tasks(i) Is Nothing Then
    Debug.Print "This is nothing."

Else
    TaskID = prj.Tasks(i).UniqueID
    ExcelRow = GetRowByUniqueID(TaskID)
    Debug.Print ExcelRow

现在,我的代码根本没有中断。

关于调用 MS 项目任务的唯一 ID 时出现 Excel VBA 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57101525/

相关文章:

excel - 如何将总计行添加到 excel power 查询?

vba - Excel VBA查找不等于0的数据并复制行标题

excel - 如何使用 VBA 将 Excel 中的一系列单元格粘贴到 Word 中

VBA:如何比较两个不同工作表中的两列

office365 - Office-ui-fabric-core 某些图标未显示

excel - 如何要求 Excel "wait"更改单元格的值?

用于 Excel XML 导出的 XML 模式

Excel - 测试范围地址中的两个连续数字是否相同

c++ - IStorage::OpenStorage OLECHAR *pwcsName for MS Project 2010

java - 将 XML 文件导入 MS Project 时出错