I have an existing project plan that someone has copied and updated a section of. I now need to copy that block (which has been extensively changed) back into the live plan. Obviously, this is simple to do however, a few of the tasks are linked to items outside the block which will be copied in.
As an example, the section of the plan will be copied in existing tasks 100-200. A few of these tasks are linked to either <100 or >200.
After I have copied the block in, I will manually add these few links in however, finding them is tricky.
I can’t use the “is within” filter as this only finds single links; for instance, if task 150 is driven by 90, it will not find task 150 if it is driven by 90,110.
Does anyone have any solutions to this?
I solved it, so I thought I would share it here 🙂 Using VBA and marking the tasks (so you need to set task formatting for marked tasks to see the results):
Sub find_links_outside_block() 'Produce by Miles Goodchld 26th Aug 2022 Dim t As Task Dim T_pred As Task Dim T_succ As Task Dim Block_start As Integer Dim Block_end As Integer Dim Choice As Integer Block_start = 15 Block_end = 23 Choice = 3 '1 = predecessor only, 2=successort only, 3 = both2 Block_start = InputBox("enter the row number of the start of your block", "finding links outside a block of tasks") Block_end = InputBox("enter the row number of the end of your block", "finding links outside a block of tasks") Choice = InputBox("Select what you want to hightlight:" & vbCrLf & "1 = Only Predesessors" & vbCrLf & "2 = Only Successors" & vbCrLf & "3 = Both", "finding links outside a bloxk of tasks") For Each t In ActiveProject.Tasks If Not t Is Nothing Then t.Marked = False If t.ID >= Block_start And t.ID <= Block_end Then If Choice = 1 Or Choice = 3 Then For Each T_pred In t.PredecessorTasks If T_pred.ID < Block_start Or T_pred.ID > Block_end Then t.Marked = True Next T_pred End If If Choice = 2 Or Choice = 3 Then For Each T_succ In t.SuccessorTasks If T_succ.ID < Block_start Or T_succ.ID > Block_end Then t.Marked = True Next T_succ End If Else 'do nothing as outside the block End If Else 'do nothing as T is nothing End If Next t