【发布时间】:2019-04-12 05:33:00
【问题描述】:
我有多个资源(学习者、辅导员和房间)分配给任务(培训课程),我想确定哪些是重复预订的,然后将它们添加到文本列中。
我正在使用 TimeScale 方法,并且我目前正在尝试计算重复预订,方法是假设在该会话的给定开始和结束日期内,任何资源的时间超过分配给它们的会话长度双重预订。
但是我不知道如何确定他们被分配的总时间。 pjTimeScale 属性似乎没有返回我需要的东西。使用 pjTimescaleHours 是最接近应该返回的实际值。
我错过了什么?还是有更好的方法?
Sub Overallocations()
'T.Text19 is the Overallocation column
'Identify the overallocations and the source ID
Dim T As Task
Dim R As Resource
Dim tsvs As TimeScaleValues
Dim asn As Assignment
For Each T In ActiveProject.Tasks
T.Text19 = ""
Next T
'Start the allocation of Rooms process
For Each T In ActiveProject.Tasks
i = 0
Application.StatusBar = "Checking Session No." & T.ID
'Checks to see if the task is a valid Module session and if it has been
confirmed. Skips if not a session or if its a confirmed session
If Left(T.Name, 1) <> "M" Then
GoTo SkipT
End If
For Each R In T.Resources
Set tsvs = R.TimeScaleData(T.Start, T.Finish, pjResourceTimescaledWork,
pjTimescaleHours)
Duration = (T.Finish - T.Start) * 60 * 24
If tsvs(1).Value > Duration + 1 Then 'THIS IS WHAT IS NOT WORKING
If T.Text19 = "" Then
T.Text19 = R.Name
Else
T.Text19 = T.Text19 & ", " & R.Name
End If
End If
Next R
SkipT:
Next T 'Next Task
MsgBox "The identification of overallocation has been completed.",
vbInformation, "Resource Overallocation Complete"
End Sub
【问题讨论】:
标签: vba ms-project