Код MS Project VBA для удаления задач с нулевым рабочим усилием с использованием настраиваемого поля в качестве критерия
В настоящее время я пытаюсь написать код VBA, который будет смотреть на план проекта и удалять все задачи, которые не требуют усилий, но не являются вехой, из моего плана. Мы добавили настраиваемое поле с именем Key Milestone, чтобы определить, является ли задача этапом или нет. Причина, по которой мы не используем существующее поле Milestone, заключается в том, что не все задачи с нулевым рабочим усилием и нулевой продолжительностью обязательно являются вехами.
Ранее я был незнаком с функцией GetField в VBA, и я несколько раз пытался внедрить ее, чтобы "прочитать" пользовательское поле как часть этого кода. Вот что у меня так далеко:
Sub DeleteMsProjectTask()
Dim proj As Project
Dim t As Task
Set proj = ActiveProject
For Each t In proj.Tasks
If t.OutlineLevel > 1 And t.Work = 0 Then
If GetField(FieldNametoFieldConstant("Key Milestone") = Yes Then
Else
t.Delete
End If
End If
Next t
End Sub
Это не работает, так как не правильно считывает поле этапа. Заранее спасибо за помощь!
1 ответ
GetField
является методом объекта Task, поэтому вам необходимо предварять его переменной объекта задачи, например t.GetField
, Также вы пропустили закрывающие скобки. А поскольку GetField возвращает строку, вам необходимо сравнить ее со строкой - другими словами, слово Да должно быть в кавычках. Поскольку критерием удаления фактически было значение "Нет", я соответственно упростил ваш код.
Sub DeleteMsProjectTask()
Dim proj As Project
Dim t As Task
Set proj = ActiveProject
For Each t In proj.Tasks
If t.OutlineLevel > 1 And t.Work = 0 Then
If t.GetField(FieldNameToFieldConstant("Key Milestone")) = "No" Then
t.Delete
End If
End If
Next t
End Sub