【发布时间】:2017-07-18 20:46:38
【问题描述】:
我有一个宏,用于删除所有工作量为零的任务,如果它们是 a) 不是关键里程碑(企业定义的字段)或 b) 大于大纲级别 1。
但是,宏退出并且不再继续执行所有满足上述条件的任务。项目计划很长(大约 1840 行),它在 200 行附近停止。宏似乎没有循环所有相关任务,但我不知道为什么。
Sub DeleteMsProjectTask()
Dim proj As Project
Dim t As Task
Dim tsk
Dim mileTsk
Set proj = ActiveProject
For Each t In proj.Tasks
If t.OutlineLevel > 1 And t.Work = 0 Then
tsk = t.Name
mileTsk = t.GetField(FieldNameToFieldConstant("Key Milestone?", pjTask))
If mileTsk = "No" Then
t.Delete
Else
End If
End If
Next t
MsgBox ("Done")
End Sub
【问题讨论】:
-
这是因为您在向前循环时正在删除任务。删除任务时需要向后循环。而不是循环使用
For Each t In proj.Tasks,您需要循环使用For i = proj.Tasks.Count to 1 Step -1。
标签: vba ms-project