Excel VBA 调用 MS 项目任务的唯一 ID 时出错
Excel VBA error when calling MS Project Task's Unique ID
在 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
现在,我的代码完全没有损坏。
在 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
现在,我的代码完全没有损坏。