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

问题描述 投票:0回答:1

我正在使用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

感谢您的任何帮助!

excel vba ms-project
1个回答
0
投票

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

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

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

workCompl = 100 

希望这会有所帮助。

编辑1:

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

If Not t.Summary Then
    projectField = FieldNameToFieldConstant("PercentComplete") 
    t.SetField FieldID:=projectField, Value:=workCompl ' Set task work complete
End If
© www.soinside.com 2019 - 2024. All rights reserved.