【问题标题】:How to delete all values in MS Project TimeScaleData如何删除 MS Project TimeScaleData 中的所有值
【发布时间】:2017-08-05 11:54:13
【问题描述】:

我正在使用 BaselineWork1 timescaledata 来包含我每周执行的单个任务的资源工作的时间分段计算。我想在用本周的计算填充它之前将前一周的计算清零。如果没有创建一个循环来为每个任务的每个资源的时间尺度数据写入零,有没有办法更有效地做到这一点?我可以使开始日期和结束日期等于项目的开始和结束日期和时间尺度 = 秒,写入的值等于零吗?例如:

    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

这似乎不起作用,因为它只会将与项目开始日期对应的日期的基线 1 工作字段清零。

【问题讨论】:

    标签: vba ms-project


    【解决方案1】:

    要从除预测工作字段之外的任何内容中清除时间尺度的工作,您确实需要遍历每个任务的每个分配。但是,当涉及到单独的时间尺度值时,您可以按年份将它们汇总在一起,以减少所需的迭代次数。

    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 工作值不会在分配或任务级别自动更新;这些值需要明确清除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 2021-10-28
      • 1970-01-01
      • 2011-07-27
      • 2023-03-18
      • 2015-11-16
      相关资源
      最近更新 更多