【发布时间】:2019-08-10 04:04:33
【问题描述】:
我在 Microsoft 项目中有 4 个自定义字段。 “Optimistic”、“MostLikely”和“Pessimistic”是任意 3 个 Duration 字段的自定义名称。 “CriticalCnt”也是任何 20 个数字字段的必需自定义名称。我有一个例程,它标识了我已分配给变量的已自定义的 Microsoft Project 字段名称。 当我为每个任务查找这些字段的值时,我想使用变量来识别字段。
我在网上搜索了"ProjectSummaryTask","FieldConstantToFieldname",FieldnametoFieldConstant",但没有运气。
我想做的是做以下事情:
Dim i as integer, fieldvalue as long, Tsk as Task
For I = 1 to ActiveProject.task.count do
Fieldvalue =Activeproject.Task.CriticalCnt
Debug.print ("Task=" & Task(i).id & " Task(i).CriticalCnt=" &
Task(i).CriticalCnt)
next i
此例程获取 9 位代码以识别 CustomNamed 字段。在这种情况下,Number4 被分配了“CriticalCnt”的 CustomName。我不知道值 3 在这个例程中更新了什么。
Sub GetFieldID()
Dim Projectfield As Long, ProjectFieldName As String, Message As String, i
As Integer, tasks As tasks, t As Long, NT As Long, tmp As tasks, criticalCnt
As String
Projectfield = FieldNameToFieldConstant("CriticalCnt", pjDuration)
Message = "ProjectfieldNumber = " & Projectfield & vbCrLf
MsgBox Message & ActiveProject.ProjectSummaryTask.GetField(Projectfield)
ActiveProject.ProjectSummaryTask.SetField FieldID:=Projectfield, Value:="3"
ProjectFieldName = FieldConstantToFieldName(Projectfield)
Message = "New Value for Field:" & ProjectFieldName & vbCrLf
MsgBox Message & ActiveProject.ProjectSummaryTask.GetField(Projectfield)
Set tasks = ActiveProject.tasks
NT = tasks.Count
Debug.Print ("NT=" & NT)
For t = 1 To NT
Debug.Print ("T=" & t)
Debug.Print (".id = " & tasks(t).ID & " Value= " & Projectfield & _
" tasks(t).Projectfield= " & Projectfield)
Debug.Print ("Value=" & _
ActiveProject.ProjectSummaryTask.GetField(Projectfield))
Next t
End Sub
【问题讨论】:
-
CriticalCnt 字段是否包含三个自定义 Duration 字段之一的字段 ID? (例如 Duration1 = 188743783,Duration5 = 188743956)
标签: vba ms-project