VBA удалит строки из MS Project, когда работа будет нулевой
У меня есть мастер-копия плана проекта, которая содержит все возможные задачи, которые мне может потребоваться выполнить в рамках проекта. Я хочу создать макрос, который удаляет все строки, где Work = 0 часов, после того, как план проекта был обновлен PM. Я новичок в написании кода для MS Project, поэтому не смог правильно понять следующее:
Sub DeleteMsProjectTask()
Dim proj As Project
Dim w As Object
Dim t As Task
Set proj = ActiveProject
For Each t In proj
If w = 0 Then
Selection.EntireRow.Delete = True
End If
Next t
Loop
End Sub
Я не уверен, что я делаю неправильно! Заранее спасибо за помощь.
1 ответ
ОБНОВЛЕНО
Вместо того, чтобы перебирать коллекцию, ссылаться на объекты задачи по индексу. Это позволяет избежать проблем, возникающих при изменении коллекции в цикле (например, путем удаления членов).
Sub DeleteMsProjectTask()
Dim proj As Project
Set proj = ActiveProject
Dim NumTasks As Integer
NumTasks = proj.Tasks.Count
Dim idx As Integer
idx = NumTasks
Dim t As Task
Do While idx > 0
Set t = proj.Tasks(idx)
If t.Work = 0 Then
t.Delete
NumTasks = NumTasks - 1
End If
idx = idx - 1
Loop
End Sub