问题描述
我在 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
解决方法
代码中有两个错误:
-
在计算每个新的进度摘要任务之前,TotalProgres 未重置为 0。
-
变量被声明为“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