MyBlackStar
New Member
- Joined
- Jul 3, 2009
- Messages
- 10
This macro is part of the Pertmaster Risk Expert Application: It was not created by me nore modified by me, it is part of the PertMaster Risk Expert Software:
I am trying to run the Convert Lags To Tasks Macro Ver. 1.3 but i keep getting the following Error Message: Compile error: Method or Data member not found
Would Anyone Be So kind to help me resolve this issue because i am not very apt with VBA scrip and trouble shooting this sort of issues.
Here is the list of the codes for the macro: I have not change any codes from the original pertmaster file.
****** http-equiv="Content-Type" content="text/html; charset=utf-8">****** name="ProgId" content="Word.Document">****** name="Generator" content="Microsoft Word 11">****** name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CJOSERA%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--> Option Explicit<o></o>
<o> </o>
Private m_dtTimeNow As Date<o></o>
<o> </o>
Private Sub cmdCancel_Click()<o></o>
Unload Me<o></o>
End Sub<o></o>
<o> </o>
Private Sub cmdOK_Click()<o></o>
<o> </o>
Dim nCount As Long<o></o>
Dim objTask As Task<o></o>
Dim objLink As Link<o></o>
<o></o>
'Checks if the txtLag field contains a numeric values<o></o>
If Not IsNumeric(txtLag) Then<o></o>
MsgBox "The lag duration value is not a valid number."<o></o>
txtLag.SetFocus<o></o>
Exit Sub<o></o>
End If<o></o>
<o></o>
'This macro does not convert negative lags<o></o>
If Not txtLag.Value >= 0 Then<o></o>
MsgBox "The lag duration value cannot be a negative value."<o></o>
txtLag.SetFocus<o></o>
Exit Sub<o></o>
End If<o></o>
<o></o>
' check that the correlation value is in range<o></o>
If chkCorrelate Then<o></o>
If Not IsNumeric(txtCorr.Value) Then<o></o>
MsgBox "The Correlation value is not a valid number"<o></o>
txtCorr.SetFocus<o></o>
Exit Sub<o></o>
End If<o></o>
End If<o></o>
<o></o>
' add the links as required<o></o>
nCount = 0<o></o>
<o></o>
MouseWaitPointer True<o></o>
<o></o>
ActivePlan.Windows.AutoRefresh = False<o></o>
ActivePlan.AutoTimeAnalyse = False<o></o>
<o></o>
m_dtTimeNow = ActivePlan.SummaryInfo.TimeNow<o></o>
<o></o>
For Each objTask In ActivePlan.Tasks<o></o>
<o></o>
For Each objLink In objTask.Links.Succeeding<o></o>
<o></o>
If ShouldAddLag(objTask, objLink) = True Then<o></o>
AddLinkTask objTask, objLink<o></o>
nCount = nCount + 1<o></o>
End If<o></o>
<o></o>
Next 'objLink<o></o>
Next 'objTask<o></o>
<o></o>
ActivePlan.EmptyUndoList<o></o>
ActivePlan.AutoTimeAnalyse = False<o></o>
ActivePlan.TimeAnalyse<o></o>
ActivePlan.Windows.AutoRefresh = True<o></o>
<o></o>
MsgBox nCount & " lags converted to tasks"<o></o>
<o></o>
SaveModuleSetting REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "txtLag", txtLag.Value<o></o>
SaveModuleSetting REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkSuccRisk", chkSuccRisk.Value<o></o>
SaveModuleSetting REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkCorrelate", chkCorrelate.Value<o></o>
SaveModuleSetting REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "txtCorr", txtCorr.Value<o></o>
SaveModuleSetting REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkLagsUnderSummary", chkLagsUnderSummary.Value<o></o>
<o></o>
Unload Me<o></o>
<o></o>
MouseWaitPointer False<o></o>
<o></o>
End Sub<o></o>
<o> </o>
Private Function ShouldAddLag(objTask As Task, objLink As Link) As Boolean<o></o>
'Checks if lag should be converted to a task<o></o>
<o> </o>
ShouldAddLag = False<o></o>
<o> </o>
Dim objSucTask As Task<o></o>
Set objSucTask = objLink.Task<o></o>
<o> </o>
'is lag greater than or eqaul to the specified value<o></o>
If objLink.Lag >= txtLag.Value Then<o></o>
<o> </o>
'has the successor started<o></o>
If objLink.LinkType = eltFinishToStart Or objLink.LinkType = eltStartToStart Then<o></o>
<o></o>
If objSucTask.Dates.ActualStart > 0 Then<o></o>
Exit Function<o></o>
End If<o></o>
<o></o>
ElseIf objLink.LinkType = eltFinishToFinish Or objLink.LinkType = eltStartToFinish Then<o></o>
<o></o>
If objSucTask.Dates.ActualFinish > 0 Then<o></o>
Exit Function<o></o>
End If<o></o>
<o></o>
End If<o></o>
<o> </o>
ShouldAddLag = True<o></o>
<o></o>
End If<o></o>
<o> </o>
End Function<o></o>
<o> </o>
Private Sub AddLinkTask(objTask As Task, objLink As Link)<o></o>
'Converts lag into a task and replaces lag with link<o></o>
<o></o>
Dim objLinkTask As Task<o></o>
Dim objSummaryTask As Task<o></o>
Dim objTaskRiskDist As RiskDistribution<o></o>
Dim objLagRiskDist As RiskDistribution<o></o>
Dim fRatio As Double<o></o>
Dim fltRemainingPercent As Double<o></o>
Dim nDaysDone As Long<o></o>
Dim nRDUR As Long<o></o>
<o></o>
Set objLinkTask = ActivePlan.Tasks.Add<o></o>
objLinkTask.Name = GetLinkType(objLink) & objTask.Name & ":" & objLink.Task.Name<o></o>
<o></o>
objLinkTask.RemainingDuration = objLink.Lag<o></o>
objLinkTask.Description = "Lag Task"<o></o>
<o></o>
'link the new task in<o></o>
If objLink.LinkType = eltFinishToStart Then<o></o>
<o></o>
objLinkTask.Links.Preceding.Add objTask.Name, eltFinishToStart<o></o>
objLinkTask.Links.Succeeding.Add objLink.Task.Name, eltFinishToStart<o></o>
<o></o>
Set objTaskRiskDist = objTask.RiskRemainingDuration(eroaReturnOnlyIfExists)<o></o>
<o></o>
nRDUR = objTask.RemainingDuration<o></o>
<o></o>
ElseIf objLink.LinkType = eltStartToStart Then<o></o>
<o></o>
objLinkTask.Links.Preceding.Add objTask.Name, eltStartToStart<o></o>
objLinkTask.Links.Succeeding.Add objLink.Task.Name, eltFinishToStart<o></o>
<o></o>
Set objTaskRiskDist = objLink.Task.RiskRemainingDuration(eroaReturnOnlyIfExists)<o></o>
<o></o>
nRDUR = objLink.Task.RemainingDuration<o></o>
<o></o>
ElseIf objLink.LinkType = eltFinishToFinish Then<o></o>
<o></o>
objLinkTask.Links.Preceding.Add objTask.Name, eltFinishToStart<o></o>
objLinkTask.Links.Succeeding.Add objLink.Task.Name, eltFinishToFinish<o></o>
<o></o>
Set objTaskRiskDist = objTask.RiskRemainingDuration(eroaReturnOnlyIfExists)<o></o>
<o></o>
nRDUR = objTask.RemainingDuration<o></o>
<o></o>
ElseIf objLink.LinkType = eltStartToFinish Then<o></o>
<o></o>
objLinkTask.Links.Preceding.Add objTask.Name, eltStartToStart<o></o>
objLinkTask.Links.Succeeding.Add objLink.Task.Name, eltFinishToFinish<o></o>
<o></o>
Set objTaskRiskDist = objLink.Task.RiskRemainingDuration(eroaReturnOnlyIfExists)<o></o>
nRDUR = objLink.Task.RemainingDuration<o></o>
<o></o>
End If<o></o>
<o></o>
'set the linktask calendar<o></o>
If objLink.LinkType = eltStartToFinish Or objLink.LinkType = eltStartToStart Then<o></o>
Set objLinkTask.Calendar = objTask.Calendar<o></o>
Else<o></o>
Set objLinkTask.Calendar = objLink.Task.Calendar<o></o>
End If<o></o>
<o></o>
'Set the linkTask Actual start if task has already started<o></o>
If objLink.LinkType = eltStartToFinish Or objLink.LinkType = eltStartToStart Then<o></o>
<o></o>
If objTask.Dates.ActualStart > 0 Then<o></o>
objLinkTask.Dates.ActualStart = objTask.Dates.ActualStart<o></o>
End If<o></o>
<o></o>
ElseIf objLink.LinkType = eltFinishToStart Or objLink.LinkType = eltFinishToFinish Then<o></o>
<o></o>
If objTask.Dates.ActualFinish > 0 Then<o></o>
objLinkTask.Dates.ActualStart = objTask.Dates.ActualFinish<o></o>
End If<o></o>
<o></o>
End If<o></o>
<o></o>
If objLinkTask.Dates.ActualStart > 0 Then<o></o>
<o></o>
objLinkTask.OriginalDuration = objLink.Lag<o></o>
nDaysDone = objTask.GetWorkingTime(objTask.Dates.ActualStart, ActivePlan.SummaryInfo.TimeNow, ewdStartTimeToStartTime)<o></o>
<o></o>
If objLink.Lag > nDaysDone Then<o></o>
objLinkTask.RemainingDuration = objLink.Lag - nDaysDone<o></o>
Else<o></o>
objLinkTask.RemainingDuration = 0<o></o>
End If<o></o>
<o></o>
End If<o></o>
<o></o>
If chkSuccRisk.Value = True Then<o></o>
' Set objTaskRiskDist = objLink.Task.RiskRemainingDuration(eroaReturnOnlyIfExists)<o></o>
<o></o>
If Not objTaskRiskDist Is Nothing Then<o></o>
<o></o>
Set objLagRiskDist = objLinkTask.RiskRemainingDuration(eroaCreateIfNotExist)<o></o>
<o></o>
fRatio = objTaskRiskDist.Min / nRDUR<o></o>
objLagRiskDist.Min = objLinkTask.RemainingDuration * fRatio<o></o>
<o></o>
fRatio = objTaskRiskDist.MostLikely / nRDUR<o></o>
objLagRiskDist.MostLikely = objLinkTask.RemainingDuration * fRatio<o></o>
<o></o>
fRatio = objTaskRiskDist.Max / nRDUR<o></o>
objLagRiskDist.Max = objLinkTask.RemainingDuration * fRatio<o></o>
<o></o>
If chkCorrelate.Value = True And txtCorr.Value > "" Then<o></o>
<o></o>
Set objLagRiskDist.CorrelationParentRisk = objTaskRiskDist<o></o>
<o></o>
objLagRiskDist.CorrelationPercentage = txtCorr.Value<o></o>
<o></o>
End If<o></o>
<o></o>
End If<o></o>
End If<o></o>
<o> </o>
On Error Resume Next<o></o>
<o> </o>
'Stores the new tasks representing lags under a summary level<o></o>
If chkLagsUnderSummary Then<o></o>
<o></o>
Set objSummaryTask = ActivePlan.Tasks("LAGTASKS")<o></o>
<o></o>
If objSummaryTask Is Nothing Then<o></o>
Set objSummaryTask = ActivePlan.Tasks.Add<o></o>
objSummaryTask.Name = "LAGTASKS"<o></o>
objSummaryTask.Description = "Lag Tasks"<o></o>
objSummaryTask.Style.TextAttributes.BackgroundColor = 255<o></o>
End If<o></o>
<o> </o>
Set objLinkTask.ParentTask = objSummaryTask<o></o>
<o></o>
End If<o></o>
<o></o>
objLink.Lag = 0<o></o>
<o> </o>
End Sub<o></o>
<o> </o>
Private Function GetLinkType(objLink As Link) As String<o></o>
<o> </o>
'assume FS unless proved otherwise<o></o>
GetLinkType = "FS_"<o></o>
<o></o>
If objLink.LinkType = eltStartToStart Then<o></o>
GetLinkType = "SS_"<o></o>
ElseIf objLink.LinkType = eltFinishToFinish Then<o></o>
GetLinkType = "FF_"<o></o>
ElseIf objLink.LinkType = eltStartToFinish Then<o></o>
GetLinkType = "SF_"<o></o>
End If<o></o>
<o> </o>
End Function<o></o>
<o> </o>
Private Sub chkCorrelate_Click()<o></o>
txtCorr.Enabled = chkCorrelate.Value<o></o>
End Sub<o></o>
<o> </o>
Private Sub chkSuccRisk_Click()<o></o>
<o></o>
chkCorrelate.Enabled = chkSuccRisk.Value<o></o>
<o></o>
If chkCorrelate.Enabled And chkCorrelate.Value Then<o></o>
txtCorr.Enabled = True<o></o>
Else<o></o>
txtCorr.Enabled = False<o></o>
End If<o></o>
<o> </o>
End Sub<o></o>
<o> </o>
Private Sub txtCorr_Change()<o></o>
<o> </o>
If txtCorr.Value = "" And chkCorrelate.Value Then<o></o>
chkCorrelate.Value = False<o></o>
txtCorr.Enabled = False<o></o>
End If<o></o>
<o></o>
End Sub<o></o>
<o> </o>
Private Sub UserForm_Initialize()<o></o>
<o> </o>
chkSuccRisk_Click<o></o>
txtLag = GetModuleSetting(REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "txtLag", "20")<o></o>
chkSuccRisk.Value = GetModuleSetting(REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkSuccRisk", "False")<o></o>
chkCorrelate.Value = GetModuleSetting(REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkCorrelate", "False")<o></o>
txtCorr = GetModuleSetting(REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "txtCorr", "100")<o></o>
chkLagsUnderSummary.Value = GetModuleSetting(REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkLagsUnderSummary", "False")<o></o>
chkSuccRisk_Click<o></o>
<o> </o>
End Sub
I am trying to run the Convert Lags To Tasks Macro Ver. 1.3 but i keep getting the following Error Message: Compile error: Method or Data member not found
Would Anyone Be So kind to help me resolve this issue because i am not very apt with VBA scrip and trouble shooting this sort of issues.
Here is the list of the codes for the macro: I have not change any codes from the original pertmaster file.
****** http-equiv="Content-Type" content="text/html; charset=utf-8">****** name="ProgId" content="Word.Document">****** name="Generator" content="Microsoft Word 11">****** name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CJOSERA%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--> Option Explicit<o></o>
<o> </o>
Private m_dtTimeNow As Date<o></o>
<o> </o>
Private Sub cmdCancel_Click()<o></o>
Unload Me<o></o>
End Sub<o></o>
<o> </o>
Private Sub cmdOK_Click()<o></o>
<o> </o>
Dim nCount As Long<o></o>
Dim objTask As Task<o></o>
Dim objLink As Link<o></o>
<o></o>
'Checks if the txtLag field contains a numeric values<o></o>
If Not IsNumeric(txtLag) Then<o></o>
MsgBox "The lag duration value is not a valid number."<o></o>
txtLag.SetFocus<o></o>
Exit Sub<o></o>
End If<o></o>
<o></o>
'This macro does not convert negative lags<o></o>
If Not txtLag.Value >= 0 Then<o></o>
MsgBox "The lag duration value cannot be a negative value."<o></o>
txtLag.SetFocus<o></o>
Exit Sub<o></o>
End If<o></o>
<o></o>
' check that the correlation value is in range<o></o>
If chkCorrelate Then<o></o>
If Not IsNumeric(txtCorr.Value) Then<o></o>
MsgBox "The Correlation value is not a valid number"<o></o>
txtCorr.SetFocus<o></o>
Exit Sub<o></o>
End If<o></o>
End If<o></o>
<o></o>
' add the links as required<o></o>
nCount = 0<o></o>
<o></o>
MouseWaitPointer True<o></o>
<o></o>
ActivePlan.Windows.AutoRefresh = False<o></o>
ActivePlan.AutoTimeAnalyse = False<o></o>
<o></o>
m_dtTimeNow = ActivePlan.SummaryInfo.TimeNow<o></o>
<o></o>
For Each objTask In ActivePlan.Tasks<o></o>
<o></o>
For Each objLink In objTask.Links.Succeeding<o></o>
<o></o>
If ShouldAddLag(objTask, objLink) = True Then<o></o>
AddLinkTask objTask, objLink<o></o>
nCount = nCount + 1<o></o>
End If<o></o>
<o></o>
Next 'objLink<o></o>
Next 'objTask<o></o>
<o></o>
ActivePlan.EmptyUndoList<o></o>
ActivePlan.AutoTimeAnalyse = False<o></o>
ActivePlan.TimeAnalyse<o></o>
ActivePlan.Windows.AutoRefresh = True<o></o>
<o></o>
MsgBox nCount & " lags converted to tasks"<o></o>
<o></o>
SaveModuleSetting REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "txtLag", txtLag.Value<o></o>
SaveModuleSetting REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkSuccRisk", chkSuccRisk.Value<o></o>
SaveModuleSetting REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkCorrelate", chkCorrelate.Value<o></o>
SaveModuleSetting REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "txtCorr", txtCorr.Value<o></o>
SaveModuleSetting REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkLagsUnderSummary", chkLagsUnderSummary.Value<o></o>
<o></o>
Unload Me<o></o>
<o></o>
MouseWaitPointer False<o></o>
<o></o>
End Sub<o></o>
<o> </o>
Private Function ShouldAddLag(objTask As Task, objLink As Link) As Boolean<o></o>
'Checks if lag should be converted to a task<o></o>
<o> </o>
ShouldAddLag = False<o></o>
<o> </o>
Dim objSucTask As Task<o></o>
Set objSucTask = objLink.Task<o></o>
<o> </o>
'is lag greater than or eqaul to the specified value<o></o>
If objLink.Lag >= txtLag.Value Then<o></o>
<o> </o>
'has the successor started<o></o>
If objLink.LinkType = eltFinishToStart Or objLink.LinkType = eltStartToStart Then<o></o>
<o></o>
If objSucTask.Dates.ActualStart > 0 Then<o></o>
Exit Function<o></o>
End If<o></o>
<o></o>
ElseIf objLink.LinkType = eltFinishToFinish Or objLink.LinkType = eltStartToFinish Then<o></o>
<o></o>
If objSucTask.Dates.ActualFinish > 0 Then<o></o>
Exit Function<o></o>
End If<o></o>
<o></o>
End If<o></o>
<o> </o>
ShouldAddLag = True<o></o>
<o></o>
End If<o></o>
<o> </o>
End Function<o></o>
<o> </o>
Private Sub AddLinkTask(objTask As Task, objLink As Link)<o></o>
'Converts lag into a task and replaces lag with link<o></o>
<o></o>
Dim objLinkTask As Task<o></o>
Dim objSummaryTask As Task<o></o>
Dim objTaskRiskDist As RiskDistribution<o></o>
Dim objLagRiskDist As RiskDistribution<o></o>
Dim fRatio As Double<o></o>
Dim fltRemainingPercent As Double<o></o>
Dim nDaysDone As Long<o></o>
Dim nRDUR As Long<o></o>
<o></o>
Set objLinkTask = ActivePlan.Tasks.Add<o></o>
objLinkTask.Name = GetLinkType(objLink) & objTask.Name & ":" & objLink.Task.Name<o></o>
<o></o>
objLinkTask.RemainingDuration = objLink.Lag<o></o>
objLinkTask.Description = "Lag Task"<o></o>
<o></o>
'link the new task in<o></o>
If objLink.LinkType = eltFinishToStart Then<o></o>
<o></o>
objLinkTask.Links.Preceding.Add objTask.Name, eltFinishToStart<o></o>
objLinkTask.Links.Succeeding.Add objLink.Task.Name, eltFinishToStart<o></o>
<o></o>
Set objTaskRiskDist = objTask.RiskRemainingDuration(eroaReturnOnlyIfExists)<o></o>
<o></o>
nRDUR = objTask.RemainingDuration<o></o>
<o></o>
ElseIf objLink.LinkType = eltStartToStart Then<o></o>
<o></o>
objLinkTask.Links.Preceding.Add objTask.Name, eltStartToStart<o></o>
objLinkTask.Links.Succeeding.Add objLink.Task.Name, eltFinishToStart<o></o>
<o></o>
Set objTaskRiskDist = objLink.Task.RiskRemainingDuration(eroaReturnOnlyIfExists)<o></o>
<o></o>
nRDUR = objLink.Task.RemainingDuration<o></o>
<o></o>
ElseIf objLink.LinkType = eltFinishToFinish Then<o></o>
<o></o>
objLinkTask.Links.Preceding.Add objTask.Name, eltFinishToStart<o></o>
objLinkTask.Links.Succeeding.Add objLink.Task.Name, eltFinishToFinish<o></o>
<o></o>
Set objTaskRiskDist = objTask.RiskRemainingDuration(eroaReturnOnlyIfExists)<o></o>
<o></o>
nRDUR = objTask.RemainingDuration<o></o>
<o></o>
ElseIf objLink.LinkType = eltStartToFinish Then<o></o>
<o></o>
objLinkTask.Links.Preceding.Add objTask.Name, eltStartToStart<o></o>
objLinkTask.Links.Succeeding.Add objLink.Task.Name, eltFinishToFinish<o></o>
<o></o>
Set objTaskRiskDist = objLink.Task.RiskRemainingDuration(eroaReturnOnlyIfExists)<o></o>
nRDUR = objLink.Task.RemainingDuration<o></o>
<o></o>
End If<o></o>
<o></o>
'set the linktask calendar<o></o>
If objLink.LinkType = eltStartToFinish Or objLink.LinkType = eltStartToStart Then<o></o>
Set objLinkTask.Calendar = objTask.Calendar<o></o>
Else<o></o>
Set objLinkTask.Calendar = objLink.Task.Calendar<o></o>
End If<o></o>
<o></o>
'Set the linkTask Actual start if task has already started<o></o>
If objLink.LinkType = eltStartToFinish Or objLink.LinkType = eltStartToStart Then<o></o>
<o></o>
If objTask.Dates.ActualStart > 0 Then<o></o>
objLinkTask.Dates.ActualStart = objTask.Dates.ActualStart<o></o>
End If<o></o>
<o></o>
ElseIf objLink.LinkType = eltFinishToStart Or objLink.LinkType = eltFinishToFinish Then<o></o>
<o></o>
If objTask.Dates.ActualFinish > 0 Then<o></o>
objLinkTask.Dates.ActualStart = objTask.Dates.ActualFinish<o></o>
End If<o></o>
<o></o>
End If<o></o>
<o></o>
If objLinkTask.Dates.ActualStart > 0 Then<o></o>
<o></o>
objLinkTask.OriginalDuration = objLink.Lag<o></o>
nDaysDone = objTask.GetWorkingTime(objTask.Dates.ActualStart, ActivePlan.SummaryInfo.TimeNow, ewdStartTimeToStartTime)<o></o>
<o></o>
If objLink.Lag > nDaysDone Then<o></o>
objLinkTask.RemainingDuration = objLink.Lag - nDaysDone<o></o>
Else<o></o>
objLinkTask.RemainingDuration = 0<o></o>
End If<o></o>
<o></o>
End If<o></o>
<o></o>
If chkSuccRisk.Value = True Then<o></o>
' Set objTaskRiskDist = objLink.Task.RiskRemainingDuration(eroaReturnOnlyIfExists)<o></o>
<o></o>
If Not objTaskRiskDist Is Nothing Then<o></o>
<o></o>
Set objLagRiskDist = objLinkTask.RiskRemainingDuration(eroaCreateIfNotExist)<o></o>
<o></o>
fRatio = objTaskRiskDist.Min / nRDUR<o></o>
objLagRiskDist.Min = objLinkTask.RemainingDuration * fRatio<o></o>
<o></o>
fRatio = objTaskRiskDist.MostLikely / nRDUR<o></o>
objLagRiskDist.MostLikely = objLinkTask.RemainingDuration * fRatio<o></o>
<o></o>
fRatio = objTaskRiskDist.Max / nRDUR<o></o>
objLagRiskDist.Max = objLinkTask.RemainingDuration * fRatio<o></o>
<o></o>
If chkCorrelate.Value = True And txtCorr.Value > "" Then<o></o>
<o></o>
Set objLagRiskDist.CorrelationParentRisk = objTaskRiskDist<o></o>
<o></o>
objLagRiskDist.CorrelationPercentage = txtCorr.Value<o></o>
<o></o>
End If<o></o>
<o></o>
End If<o></o>
End If<o></o>
<o> </o>
On Error Resume Next<o></o>
<o> </o>
'Stores the new tasks representing lags under a summary level<o></o>
If chkLagsUnderSummary Then<o></o>
<o></o>
Set objSummaryTask = ActivePlan.Tasks("LAGTASKS")<o></o>
<o></o>
If objSummaryTask Is Nothing Then<o></o>
Set objSummaryTask = ActivePlan.Tasks.Add<o></o>
objSummaryTask.Name = "LAGTASKS"<o></o>
objSummaryTask.Description = "Lag Tasks"<o></o>
objSummaryTask.Style.TextAttributes.BackgroundColor = 255<o></o>
End If<o></o>
<o> </o>
Set objLinkTask.ParentTask = objSummaryTask<o></o>
<o></o>
End If<o></o>
<o></o>
objLink.Lag = 0<o></o>
<o> </o>
End Sub<o></o>
<o> </o>
Private Function GetLinkType(objLink As Link) As String<o></o>
<o> </o>
'assume FS unless proved otherwise<o></o>
GetLinkType = "FS_"<o></o>
<o></o>
If objLink.LinkType = eltStartToStart Then<o></o>
GetLinkType = "SS_"<o></o>
ElseIf objLink.LinkType = eltFinishToFinish Then<o></o>
GetLinkType = "FF_"<o></o>
ElseIf objLink.LinkType = eltStartToFinish Then<o></o>
GetLinkType = "SF_"<o></o>
End If<o></o>
<o> </o>
End Function<o></o>
<o> </o>
Private Sub chkCorrelate_Click()<o></o>
txtCorr.Enabled = chkCorrelate.Value<o></o>
End Sub<o></o>
<o> </o>
Private Sub chkSuccRisk_Click()<o></o>
<o></o>
chkCorrelate.Enabled = chkSuccRisk.Value<o></o>
<o></o>
If chkCorrelate.Enabled And chkCorrelate.Value Then<o></o>
txtCorr.Enabled = True<o></o>
Else<o></o>
txtCorr.Enabled = False<o></o>
End If<o></o>
<o> </o>
End Sub<o></o>
<o> </o>
Private Sub txtCorr_Change()<o></o>
<o> </o>
If txtCorr.Value = "" And chkCorrelate.Value Then<o></o>
chkCorrelate.Value = False<o></o>
txtCorr.Enabled = False<o></o>
End If<o></o>
<o></o>
End Sub<o></o>
<o> </o>
Private Sub UserForm_Initialize()<o></o>
<o> </o>
chkSuccRisk_Click<o></o>
txtLag = GetModuleSetting(REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "txtLag", "20")<o></o>
chkSuccRisk.Value = GetModuleSetting(REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkSuccRisk", "False")<o></o>
chkCorrelate.Value = GetModuleSetting(REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkCorrelate", "False")<o></o>
txtCorr = GetModuleSetting(REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "txtCorr", "100")<o></o>
chkLagsUnderSummary.Value = GetModuleSetting(REGISTRY_MODULE_NAME, REIGSTRY_SECTION, "chkLagsUnderSummary", "False")<o></o>
chkSuccRisk_Click<o></o>
<o> </o>
End Sub