问题描述
在MS Project Professional中,我有一个自定义字段,该字段返回正确的值...有时,没有时间返回任何值,并且在其他时间返回#ERROR,没有明显的押韵或原因。
目标:我需要捕获[Resource Names]字段以在外部应用程序中使用-很容易-但是当我有一个固定单位任务且资源单位有限时,我需要排除“ [##%]”名称的一部分。例如:Sam [25%],但我只需要“ Sam”
公式:IIf(IsNumeric(InStr(1,[Resource Names],"[")),LEFT([Resource Names],Len([Resource Names])-5),[Resource Names])
结果总结如下:
- 玛丽安== M
- Sam == #ERROR
- Sam [25%] == Sam
- IDNR == #ERROR
- Core Dev == Cor
- Bindu == Bindu
- Bindu [50%] == Bindu
- 米歇尔== Mi
- 米歇尔[25%] ==米歇尔
- disha ==空
- disha [33%] == disha
- Stuart [50%] == Stuart
- Stuart == S
需要:有人可以帮助我确定公式吗?或者,我应该吸干它并手动删除有问题的括号和数字吗?
解决方法
如果您只分配了一项任务资源,则此公式将起作用:IIf(0=InStr(1,[Resource Names],"["),Left([Resource Names],InStr(1,"[")-1))
。
但是,由于可用的功能有限,构建一个公式来处理多个资源会非常繁琐。在这种情况下,用于更新字段的宏会更好:
Sub GetResourceNames()
Dim t As Task
For Each t In ActiveProject.Tasks
Dim resList As String
resList = vbNullString
Dim a As Assignment
For Each a In t.Assignments
resList = resList & "," & a.Resource.Name
Next a
t.Text2 = Mid$(resList,2)
Next t
End Sub