How to delete all values in MS Project TimeScaleData

时间:2017-08-05 11:54:14

标签: vba ms-project

I'm using the BaselineWork1 timescaledata to contain a time phased calculation of resource work on individual tasks that I perform on a weekly basis. I want to zero out the previous week's calculation before I populate it with this week's calculation. Short of creating a loop to write zeros to the timescale data for each resource on each task is there a way to do this more efficiently? Could I make the beginning date and end date equal to the project's start and end date and time scale = seconds and the value to write equal to zero? For instance:

    For lngCnt1 = 1 To tskCounter.Resources.Count
        tskCounter.Assignments.Item(lngCnt1).TimeScaleData(StartDate:=ActiveProject.ProjectStart, EndDate:=ActiveProject.ProjectFinish, _
        Type:=pjAssignmentTimescaledBaseline1Work, _
        timescalunit:=pjTimescaleMinutes, Count:=1).Item(1).Value = 0
    Next lngCnt1

This doesn't seem to work as it only zeros out the baseline1 work field for the date corresponding to the project start date.

1 个答案:

答案 0 :(得分:0)

要从除预测工作字段之外的任何内容清除时间尺度的工作,您需要遍历每项任务的每个任务。但是,当涉及到各个时间尺度值时,您可以将这些值按年份混合在一起,以减少所需的迭代次数。

Sub ClearBaseline1Work()

    Dim projStart As Date
    Dim projEnd As Date
    projStart = ActiveProject.ProjectStart
    projEnd = ActiveProject.ProjectFinish

    Dim tsk As Task
    For Each tsk In ActiveProject.Tasks
        Dim asn As Assignment
        For Each asn In tsk.Assignments
            Dim TSValues As TimeScaleValues
            Set TSValues = asn.TimeScaleData(projStart, projEnd, pjAssignmentTimescaledBaseline1Work, pjTimescaleYears)
            Dim tsv As TimeScaleValue
            For Each tsv In TSValues
                tsv.Clear
            Next tsv
            asn.Baseline1Work = 0
        Next asn
        tsk.Baseline1Work = 0
    Next tsk

End Sub

请记住,Baseline1工作值不会在分配或任务级别自动更新;这些值需要明确清除。