调用MS Project任务的唯一ID时Excel VBA错误

时间:2019-07-18 19:33:36

标签: 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在任务数范围内时,怎么可能不设置此变量?

1 个答案:

答案 0 :(得分:2)

好的,所以我就弄清楚了。 不知何故,当我遍历所有任务时,其中一些就是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

现在,我的代码完全没有中断。