0

我目前正在研究将产品需求导入 Microsoft Project 的 VBA 宏。

我使用以下代码添加/更新任务:

Function AddTask(strText As String, lngDuration As Long, taskParent As Task)
    Dim oldTask As Task
    Set oldTask = taskParent.OutlineChildren(strText)
    If oldTask Is Nothing Then
        Dim newTask As Task
        Set newTask = taskParent.OutlineChildren.Add(Name:=strText, Before:=LastIndexOf(taskParent) + 1)
        newTask.OutlineLevel = taskParent.OutlineLevel + 1
        newTask.Duration = lngDuration
        Set AddTask = newTask
    Else
        oldTask.Duration = lngDuration
        Set AddTask = oldTask
    End If
End Function

这非常适合新任务,但不幸的是,当我尝试更新旧任务的 Duration 属性时,我遇到了一个奇怪的错误。

Run-Time Error '1101'

Argument value is not valid

我真的不明白这有什么区别

newTask.Duration = lngDuration

oldTask.Duration = lngDuration

这里发生了什么?
请帮忙!

4

1 回答 1

0

自己找的!

问题是有时任务会被添加到旧任务中。所以它现在是一个包含几个子任务的父任务。根据定义,持续时间现在是所有子持续时间的总和。因此,父任务的持续时间不能手动更改,因为它会自动更新。

所以一个简单的检查旧任务是否包含任何 OutlineChildren 然后跳过它解决了我的问题。

If oldTask.OutlineChildren.Count = 0 Then
    oldTask.Duration = lngDuration
End If

谢谢

于 2010-10-05T06:40:35.567 回答