Project和Excel VBA-设置任务的工作完成字段未设置为正确的值

时间:2019-12-23 18:51:15

标签: excel vba ms-project

我正在使用VBA通过Excel工作表中“工作完成”列中的值设置项目任务的每个“工作完成”字段。但是,当我将“工作完成字段”设置为100时,我遇到了一个奇怪的错误。有时,它成功地将Project任务的工作完成设置为100,但有时将其设置为0。在其他情况下不会发生值。

这是我的代码:

For Each row In tasksDict.Keys
Dim t As task
' Get unique id in this row
UID = Range("A" & row)
workCompl = Val(Range("F" & row)) * 100 
Debug.Print ("ID: " & UID & "Work complete: ") & workCompl ' This prints out the correct values

Set t = prj.tasks.uniqueID(UID) ' Get task by unique ID

If Not t.Summary Then
    t.SetField FieldID:=188743713, Value:=workCompl ' Set task work complete
End If

Next row

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您的代码未将工作完成字段设置为100,而是将F列中的现有值乘以100。

workCompl = Val(Range("F" & row)) * 100 

由于您使用的是上述公式,因此只有当F列的值为1时,您才会获得100。如果您的目标是将所有内容都设置为100,请使用:

workCompl = 100 

希望这会有所帮助。

Edit1:

您可以尝试使用它代替if语句吗?

If Not t.Summary Then
    projectField = FieldNameToFieldConstant("PercentComplete") 
    t.SetField FieldID:=projectField, Value:=workCompl ' Set task work complete
End If