ProjectSummaryTask和TimeScaleValues拼图 [英] ProjectSummaryTask and TimeScaleValues Puzzle

查看:129
本文介绍了ProjectSummaryTask和TimeScaleValues拼图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用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,Tim​​eScaleUnit:= 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,Tim​​eScaleUnit:= 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆