I’ve frequently wanted to quickly show all the tasks which are dependant on another from within Microsoft Project but have never found a quick was and easy way using stock the tools.
The following is a snippet of Visual Basic code which will create and apply a new filter, only displaying tasks which are dependant on a selected task.
To use it, add the Code to a Module, pick a free “custom flag field” by changing the second 2 lines (defaults to 20), create a button on the Interface for the new macro, select the task you want to analyse and click the button. Only tasks which have a traceable predecessor relationship to the selected task will be shown.
You will need to run the macro again if you want to view another task, so the filter is re-created.
Sub FilterSuccessor() ' Configure what you want the Filter to be called Dim filterName As String: filterName = "Rob's - Successors to selected Task" ' Configure the Flag Field we'll use to apply the filter (both should be the same number) Dim flagName As String: flagName = "Flag20" Dim flagType As PjField: flagType = pjTaskFlag20 Dim t As Task For Each t In ActiveProject.Tasks If Not t Is Nothing Then t.SetField flagType, "No" End If Next t For Each t In ActiveSelection.Tasks SetSuccessorFlag flagType, t Next t FilterEdit Name:=filterName, TaskFilter:=True, _ Create:=True, OverwriteExisting:=True, FieldName:=flagName, _ Test:="equals", Value:="Yes", ShowInMenu:=False, ShowSummaryTasks:=True FilterApply Name:=filterName End Sub Private Function SetSuccessorFlag(flagField As PjField, tIn As Task) If Not tIn Is Nothing Then ' Flag this Task tIn.SetField flagField, "Yes" Dim t As Task For Each t In tIn.SuccessorTasks ' Flag it's successors t.SetField flagField, "Yes" ' Flag it's successor's sucessors SetSuccessorFlag flagField, t Next t End If End Function
Edit: Thanks to Mike Walker for trying the previous code and sending me his file to test; turns out MSProject has a limit of 40 conditions when applying filters. The code has been updated so it should work with any number of identified successors.