ProjectSummaryTask和TimeScaleValues拼图 [英] ProjectSummaryTask and TimeScaleValues Puzzle
问题描述
我正在尝试使用ProjectSummaryTask(下面列出的代码片段)中的BCWS和BCWP时间刻度值加载内部数组,我遇到了一个奇怪的问题。
I'm trying to load an internal array with BCWS and BCWP time scale values from the ProjectSummaryTask (code snippet listed below), and I'm having a weird problem.
BCWS正确加载,但BCWP要么根本不加载,要么(甚至更令人费解)加载到第四个数组元素,然后不更新数组中的值。我知道正在读取BCWP 时间刻度值:我使用MsgBox显示每个tsv
,并将每个值分配给变量并在Locals窗口中观察值的变化。但是,在MsgBox和变量更新之后发生的数组更新不起作用。
The BCWS loads correctly, but the BCWP either does not load at all or (even more puzzling) loads up to the fourth array element and then does not update the values in the array. I know that the BCWP time scale values are being read: I display each tsv with a MsgBox, and I assign each value to a variable and watch the value change in the Locals window. But, the array update, which occurs right after the MsgBox and variable update, does not work.
是否有人知道导致此行为的原因,以及我可以采取哪些措施来纠正它?
Does anyone have an idea of what's causing this behavior, and what I can do to correct it?
代码:
;       
'对于项目摘要任务,每天都得到一个数组BCWP
'For project summary task, get an array with each and every days BCWP
设置tsvsBCWS = ProjectSummaryTask.TimeScaleData(_
Set tsvsBCWS = ProjectSummaryTask.TimeScaleData( _
StartDate:= InputStartDate,EndDate:= InputFinishDate,_
StartDate:=InputStartDate, EndDate:=InputFinishDate, _
输入:= pjTaskTimescaledBCWS,TimeScaleUnit:= TimeScalePeriodLength,_
Type:=pjTaskTimescaledBCWS, TimeScaleUnit:=TimeScalePeriodLength, _
计数:= 1)
'对于项目摘要任务,获取一个数组每天BCWP
'For project summary task, get an array with each and every days BCWP
设置tsvsBCWP = ProjectSummaryTask.TimeScaleData(_
Set tsvsBCWP =ProjectSummaryTask.TimeScaleData( _
StartDate:= InputStartDate,EndDate:= InputFinishDate,_
StartDate:=InputStartDate, EndDate:=InputFinishDate, _
输入:= pjTaskTimescaledBCWP,TimeScaleUnit:= TimeScalePeriodLength, _
Type:=pjTaskTimescaledBCWP, TimeScaleUnit:=TimeScalePeriodLength, _
计数:= 1)
'将此任务BCWS插入每个期间桶
'Insert this tasks BCWS into each period bucket
j = 1
for tsvsWSWS in tsvsBCWS
For Each tsvBCWS In tsvsBCWS
PeriodicBCWS( j)= VBA.Val(tsvBCWS.Value)
PeriodicBCWS(j) = VBA.Val(tsvBCWS.Value)
j = j + 1
j = j + 1
next tsvBCWS
Next tsvBCWS
'将此任务BCWP插入每个期间桶
'Insert this tasks BCWP into each period bucket
j = 1
for tsvsWW in tsvsBCWP
For Each tsvBCWP In tsvsBCWP
MsgBox Val (tsvBCWP.Value)'显示tsv
MsgBox Val(tsvBCWP.Value) ‘display tsv
x = Val(tsvBCWP.Value)'赋值给变量
x = Val(tsvBCWP.Value) ‘assign to variable
PeriodicBCWP( j)= VBA.Val(tsvBCWP.Value)
PeriodicBCWP(j) = VBA.Val(tsvBCWP.Value)
j = j + 1
j = j + 1
next tsvBCWP
Next tsvBCWP
RobVV
推荐答案
Rob,
首先,你在做什么工作新年前夕?你疯了吗?
First of all, what are you doing working on this stuff New Year's eve? Are you nuts?
不幸的是,我将不得不给你旧的"它适合我"的答案,虽然我确实需要完成和调整你的代码。这是我用于简单测试项目的修改版本,从2014年12月29日开始截至2015年1月16日。
Unfortunately I'm going to have to give you the old "it works for me" answer, although I did need to complete and tweak your code. This is the modified version I used on simple test project that goes from Dec 29, 2014 through Jan 16, 2015.
John
Sub RobVV()
Dim PeriodicBCWS()
Dim PeriodicBCWP()
Dim tsvsBCWS As TimeScaleValues
Dim tsvBCWS As TimeScaleValue
Dim tsvsBCWP As TimeScaleValues
Dim tsvBCWP As TimeScaleValue
Dim j As Integer,span As Integer
Dim InputStartDate As Date
Dim InputFinishDate As Date
InputStartDate = ActiveProject.ProjectStart
InputFinishDate = ActiveProject.ProjectFinish
span = DateDiff(" d",InputStartDate,InputFinishDate)+ 1
ReDim PeriodicBCWS(span),PeriodicBCWP(span)
'对于项目摘要任务,每天都要获得一个数组BCWS
设置tsvsBCWS = ActiveProject.ProjectSummaryTask.TimeScaleData(_
$
StartDate:= InputStartDate,EndDate:= InputFinishDate,_
$
键入:= pjTaskTimescaledBCWS,TimeScaleUnit:= pjTimescaleDays,_
$
数:= 1)
'对于项目摘要任务,每天都要获得一个数组BCWP
设置tsvsBCWP = ActiveProject.ProjectSummaryTask.TimeScaleData(_
$
StartDate:= InputStartDate,EndDate:= InputFinishDate,_
输入:= pjTaskTimescaledBCWP,TimeScaleUnit:= pjTimescaleDays,_
Count: = 1)
$
'将BCWS值插入每个期间桶中$
j = 1
对于每个tsvBCWS在tsvsBCWS中$
调试.Print tsvBCWS.Value '打印到即时窗口
PeriodicBCWS(j)= tsvBCWS.Value
j = j + 1
下一个tsvBCWS
'将BCWP值插入每个期间桶中$
j = 1
每个tsvBCWP in tsvsBCWP
Debug.Print tsvBCWP.Value
PeriodicBCWP(j)= tsvBCWP.Value
j = j + 1
下一个tsvBCWP
结束次
Sub RobVV()
Dim PeriodicBCWS()
Dim PeriodicBCWP()
Dim tsvsBCWS As TimeScaleValues
Dim tsvBCWS As TimeScaleValue
Dim tsvsBCWP As TimeScaleValues
Dim tsvBCWP As TimeScaleValue
Dim j As Integer, span As Integer
Dim InputStartDate As Date
Dim InputFinishDate As Date
InputStartDate = ActiveProject.ProjectStart
InputFinishDate = ActiveProject.ProjectFinish
span = DateDiff("d", InputStartDate, InputFinishDate) + 1
ReDim PeriodicBCWS(span), PeriodicBCWP(span)
'For project summary task, get an array with each and every days BCWS
Set tsvsBCWS = ActiveProject.ProjectSummaryTask.TimeScaleData( _
StartDate:=InputStartDate, EndDate:=InputFinishDate, _
Type:=pjTaskTimescaledBCWS, TimeScaleUnit:=pjTimescaleDays, _
Count:=1)
'For project summary task, get an array with each and every days BCWP
Set tsvsBCWP = ActiveProject.ProjectSummaryTask.TimeScaleData( _
StartDate:=InputStartDate, EndDate:=InputFinishDate, _
Type:=pjTaskTimescaledBCWP, TimeScaleUnit:=pjTimescaleDays, _
Count:=1)
'Insert BCWS values into each period bucket
j = 1
For Each tsvBCWS In tsvsBCWS
Debug.Print tsvBCWS.Value 'print to Immediate window
PeriodicBCWS(j) = tsvBCWS.Value
j = j + 1
Next tsvBCWS
'Insert BCWP values into each period bucket
j = 1
For Each tsvBCWP In tsvsBCWP
Debug.Print tsvBCWP.Value
PeriodicBCWP(j) = tsvBCWP.Value
j = j + 1
Next tsvBCWP
End Sub
这是屏幕截图这两个数组:
And here are the screen shots of the two arrays:
 
这篇关于ProjectSummaryTask和TimeScaleValues拼图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!