基于完成百分比设置Microsoft Project任务行背景色
修正后的VBA代码
Sub SetTaskRowColorByCompletion() Dim t As Task For Each t In ActiveProject.Tasks ' 跳过空任务,仅处理真实存在的任务行 If Not t Is Nothing Then ' 通过任务ID精准定位对应行,避免索引偏移问题 SelectRow Row:=t.ID, RowRelative:=False Select Case t.PercentComplete Case 100 Font32Ex CellColor:=vbGreen Case 2 To 99 Font32Ex CellColor:=vbYellow Case Else ' 匹配0%或1%的未完成状态 Font32Ex CellColor:=vbRed End Select End If Next t End Sub
关键修正说明
- 修复百分比区间判断:原代码中
Case 2 - 99是数值计算(结果为-97),完全不符合需求,改为Case 2 To 99才能正确匹配2%到99%的完成区间。 - 自动停止在最后一行任务:遍历任务时加入
If Not t Is Nothing Then判断,会自动跳过项目中的空任务(比如手动插入的空白行),仅处理真实存在的任务,自然在最后一行任务后结束运行。 - 精准定位任务行:原代码用递增索引
i定位行,当任务被删除或顺序调整时会出现偏移。改用任务ID(t.ID)直接选择对应行,定位更准确。
内容的提问来源于stack exchange,提问作者Juls
相关产品推荐
相关产品推荐

