2010-09-30 108 views
0

我目前正在研究将Microsoft Dynamics CRM产品需求导入Microsoft Project的VBA宏。将Task.Duration分配给VBA中已添加的任务Microsoft Project

我用下面的代码添加/更新任务:

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 

这完全适用新的任务,但不幸的是试图更新旧的任务持续时间属性,当我得到一个奇怪的错误。

Run-Time Error '1101' 

Argument value is not valid 

我真的不明白是什么

newTask.Duration = lngDuration 

oldTask.Duration = lngDuration 

之间的差别这是怎么回事?
请帮忙!

回答

0

自己找到了!

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

因此,一个简单的检查,如果旧任务包含任何OutlineChildren,然后跳过它解决了我的问题。

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

感谢

相关问题