The only way I can think of is with a manual process of checking the logical paths. Use these macros to display the paths:
Public Sub TraceMaster_Predecessor()
Trace_Clean
TraceMaster "predecessor"
Trace_Display
End Sub
Public Sub TraceMaster_Successor()
Trace_Clean
TraceMaster "successor"
Trace_Display
End Sub
Public Sub TraceMaster_Both()
Trace_Clean
TraceMaster "predecessor"
TraceMaster "successor"
Trace_Display
End Sub
Private Sub TraceMaster(logic As String)
'Traces the logic path
On Error GoTo EmergencyExit
Dim task1 As Task
If logic = "predecessor" Then
For Each task1 In ActiveSelection.Tasks
TracePredecessors task1
Next task1
ElseIf logic = "successor" Then
For Each task1 In ActiveSelection.Tasks
TraceSuccessors task1
Next task1
End If
Exit Sub
EmergencyExit:
HandlingErrors
End Sub
Private Sub TracePredecessors(task1 As Task)
Dim task2 As Task
task1.Flag5 = True
For Each task2 In task1.PredecessorTasks
If task2.Flag5 = False Then
TracePredecessors task2
End If
Next task2
End Sub
Private Sub TraceSuccessors(task1 As Task)
Dim task2 As Task
task1.Flag5 = True
For Each task2 In task1.SuccessorTasks
If task2.Flag5 = False Then
TraceSuccessors task2
End If
Next task2
End Sub
Private Sub Trace_Clean()
Dim task1 As Task
For Each task1 In ActiveProject.Tasks
If task1.Flag5 = True Then task1.Flag5 = False
Next task1
End Sub
Private Sub Trace_Display()
FilterEdit Name:="Flag5 - GF", TaskFilter:=True, Create:=True, OverwriteExisting:=True, FieldName:="Flag5", test:="equals", Value:="Yes", ShowInMenu:=False, _
ShowSummaryTasks:=True
FilterApply Name:="Flag5 - GF"
End Sub
Private Sub HandlingErrors()
Select Case Err.Number
Case 91
MsgBox "The first row you've selected is missing a task name.", vbCritical
Case 424
MsgBox "The row you've selected may be missing a task name.", vbCritical
Case 1100
MsgBox "This view and table combination doesn't have Outlines available. Try going to " & _
"View >> Data Group: Outline. If Outline is grayed out, try clicking on the task name." & _
vbNewLine & vbNewLine & "This error usually happens when the timeline or details pane is selected.", _
vbCritical, "Oops! Outline is Unavailable"
Case 1101
MsgBox "Try using this macro on the Task Sheet view." & vbNewLine & vbNewLine & _
"Error#" & Str(Err.Number) & " - " & Err.Description, vbCritical, "Invalid View"
Case Else
MsgBox "Error#" & Str(Err.Number) & " - " & Err.Description & vbNewLine _
& "Line: " & Erl & vbNewLine _
, vbCritical
End Select
End Sub