mps项目vba如何总结任务前辈工作完成

问题描述

我在 ms 项目中的任务很少。它们与很少的摘要任务分组,因此完成的工作进度由这些摘要任务跟踪。我需要添加一个单独的单个任务,它将总结一些摘要任务和一些单个任务的所有进度。所有需要汇总的任务都将链接为该最终汇总任务的前置任务。

我已经编写了如下代码,但我正在努力使其按预期工作。

Sub SumProgress()

Dim t As Task,subt As Task
Dim NumSub As Integer,TotalProgres As Integer,TaskProgres As Integer
Set area = ActiveProject.Tasks

For Each t In area
        If t.Flag10 = True Then
            NumSub = Int(t.PredecessorTasks.Count)
            For Each subt In t.PredecessorTasks
                TotalProgres = TotalProgres + Int(subt.PercentComplete)
            Next subt
            t.PercentComplete = TotalProgress / NumSub
        End If
Next t


End Sub

解决方法

代码中有两个错误:

  1. 在计算每个新的进度摘要任务之前,TotalProgres 未重置为 0。

  2. 变量被声明为“TotalProgres”但后来它被用作“TotalProgress”,不同的拼写=不同的变量。始终使用 Option Explicit 来轻松避免此类错误。见What do Option Strict and Option Explicit do?

这是修复了这些问题的代码:

Option Explicit

Sub SumProgress()

Dim area As Tasks
Dim t As Task,subt As Task
Dim NumSub As Integer,TotalProgress As Integer
Set area = ActiveProject.Tasks

For Each t In area
    If Not t Is Nothing Then
        If t.Flag10 = True Then
            TotalProgress = 0
            NumSub = Int(t.PredecessorTasks.Count)
            For Each subt In t.PredecessorTasks
                TotalProgress = TotalProgress + Int(subt.PercentComplete)
            Next subt
            t.PercentComplete = TotalProgress / NumSub
        End If
    End If
Next t

End Sub

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...