我正在使用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
感谢您的帮助!
答案 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