EP06. “Tasks on Schedule 任务进度标色”
🔒 登录后可标记已读- 做一个任务进度追踪表:每个任务在每天的格子里打 1 代表「当天完成」
- 宏会自动检查到今天为止的所有格子,任务进度跟上就标绿色、落后就标红色
- 前置知识:嵌套 Do While 循环、
Interior.ColorIndex改背景色 - 学完能自己写「按日期进度自动标色」的进度追踪表
重点内容
适用版本
桌面版通用(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)——一旦标红,即使后面还有其他格子符合,也不会再变回绿色
[截图:运行宏后的任务进度表,任务名称那一列依进度分别显示绿色(跟上进度)或红色(落后进度)背景色]
学完你会
- ✅ 用嵌套 Do While 循环同时走过「任务」和「日期」两个维度
- ✅ 用
Interior.ColorIndex依条件改变单元格背景色 - ✅ 用「日期 ≤ 今天」判断哪些进度该检查、哪些还没到期
常见错误
- 起始行/列的数字(6、4、2)跟实际表格位置对不上,检查的范围整个偏移
- 内层循环的日期比较条件抄错方向,把「已经到期」判断成「还没到期」
- 把这段代码写成一次性执行的宏,而不是绑定在 Worksheet Change 事件上,数据更新后颜色不会自动刷新
Sources
Blog / Website: