首页 > 解决方案 > 使用 Excel 工作表中的值设置任务的工作完成字段

问题描述

我正在使用 VBA 使用 Excel 工作表中“工作完成”列中的值设置项目任务的每个“工作完成”字段。

当我将工作完成字段设置为 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

标签: excelvbams-project

解决方案


您的代码没有将工作完成字段设置为 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

推荐阅读