Microsoft Lab
全部软件
Excel日期与时间(Date and Time)约 3 分钟

Tasks on Schedule 任务进度标色

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


完整代码

Dim i As Integer, j As Integer

Do While Cells(6 + i, 1).Value <> ""
    j = 0
    Cells(6 + i, 1).Interior.ColorIndex = 4

    Do While Cells(4, 2 + j).Value <= Date
        If Cells(6 + i, 2 + j).Value = 0 Then Cells(6 + i, 1).Interior.ColorIndex = 3
        j = j + 1
    Loop

    i = i + 1
Loop

逻辑说明

  • 外层循环:从第 6 行开始,逐一走过每个任务,直到该行任务名称是空的为止
  • 每个任务先预设标成绿色(ColorIndex = 4)
  • 内层循环:走过第 4 行里所有「日期 ≤ 今天」的日期栏位(也就是已经到期该完成的部分)
  • 只要有任何一格该完成却是 0(未完成),就把这个任务标成红色(ColorIndex = 3)——一旦标红,即使后面还有其他格子符合,也不会再变回绿色
📷 画面提示

运行宏后的任务进度表,任务名称那一列依进度分别显示绿色(跟上进度)或红色(落后进度)背景色


学完你会

常见错误

  • 起始行/列的数字(6、4、2)跟实际表格位置对不上,检查的范围整个偏移
  • 内层循环的日期比较条件抄错方向,把「已经到期」判断成「还没到期」
  • 把这段代码写成一次性执行的宏,而不是绑定在 Worksheet Change 事件上,数据更新后颜色不会自动刷新

Sources

Blog / Website:

  1. Tasks on Schedule
只记在你的浏览器里,换设备不会同步。