Home › Forums › Discussion Forum › Task Predecessor Drivers
Al Fernandez asked:
When a task has more then one predecessor, what would be the name for the predecessor that occurs last, that is actually driving the task? Can that task be identified by ID in a column? I would like to have a column that only shows the one predecessor, namely the one that if changed by one day will affect the task by one day. As the schedule progresses and actual start dates are added, a different one of the predecessor could possibly take this role. When I use the Task Inspector, it gives me the last predecessor in the column, can this behavior be modified to show the “most critical” predecessor?
Firstly, some background:
Within VBA, there is a Class called StartDriver that has a Collection Class of PredecessorDrivers
Using this, I developed the code below in MS Project 2010
Comments welcome
`Option Explicit
‘ © Andy Forrester June 2015
Sub Drivers()
Dim prj As Project
Dim tsk As Task
Dim Driver As Object
Dim Drivertext As String
Set prj = ActiveProject
Application.Calculation = pjManual ‘Stop Calculating
Application.ScreenUpdating = False ‘Stop Refeshing the Screen
For Each tsk In prj.Tasks
DoEvents
Application.StatusBar = “Checking ID: ” & tsk.ID
If Not tsk Is Nothing Then ‘skip blank tasks
If Not tsk.Summary Then ‘ skip Summary Tasks
If tsk.PercentComplete <> 100 Then ‘ skip complete tasks
If tsk.StartDriver.PredecessorDrivers.Count > 0 Then ‘There is at least one Driver
tsk.Text29 = “” ‘Clear text29 from previous runs
Drivertext = “Driver ID(s) :”
For Each Driver In tsk.StartDriver.PredecessorDrivers
Drivertext = Drivertext & ” ” & Driver.From.ID
Next Driver
tsk.Text29 = Drivertext
End If
End If
End If
End If
Next tsk
Application.StatusBar = False
Application.Calculation = pjAutomatic ‘Start Calculating
Application.ScreenUpdating = True ‘Start Refeshing the Screen
MsgBox “Driver Checking Complete”
End Sub
`
The conversation is here
https://www.linkedin.com/grp/post/25618-6011247407667441668
For info, the StartDriver Class was introduced in MS Project 2007, so this code should also work in 2007 versions, but not any prior ones