0

私は現在、製品要件をMicrosoftProjectにインポートする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 に答える