颜色摘要任务的宏是 90% 的工作,无法弄清楚为什么它不是 100% 的工作
Macro to color Summary Tasks is 90% working, cannot figure out why it is not 100% working
以下代码仅在所有摘要任务都完全展开时才有效。如果任何摘要任务被折叠,代码就会出错。
我什至不知道要尝试什么来解决这个问题。
Sub ColorSummaryTasks()
Dim t As Task
Dim i As Integer
i = 1
For Each t In ActiveProject.Tasks
If t.Summary Then
SelectRow row:=i, rowrelative:=False
Select Case t.OutlineLevel
Case 1
Font32Ex CellColor:=&H1099FF 'Hex code needs to be reversed
Case 2
Font32Ex CellColor:=&HFF9900
Case 3
Font32Ex CellColor:=&H66FF66
Case 4
Font32Ex CellColor:=&H10CC99
Case 5
Font32Ex CellColor:=&HDD3377
Case 6
Font32Ex CellColor:=&HFF00FF
End Select
End If
i = i + 1
Next t
End Sub
无论摘要任务是否展开,代码都能正常工作的预期结果。发生的情况是,如果摘要任务下有 3 个折叠的行,它不会为接下来的 3 个未折叠的行着色,无论它们是否是摘要任务。 Imgur link 显示了当宏为 运行 并且摘要任务同时折叠和打开时会发生什么。 https://imgur.com/a/3stezhQ
问题源于代码以两种不同的方式循环执行任务。通过 task collection will go through every task whether visible or not. Using the SelectRow 方法循环仅适用于 可见任务.
同步这两种方法的最简单方法是从显示所有任务开始。将此代码放在循环之前*:
FilterApply "All Tasks"
SelectAll
OutlineShowAllTasks
SelectBeginning
* 请注意,这假定任务视图处于活动状态并且分组依据设置为 [无分组]。
或者,您可以 select 使用 Find 方法而不是使用 SelectRow 来完成所需的任务。仅供参考:这将跳过不可见的摘要任务。
Sub ColorSummaryTasks()
Dim t As Task
For Each t In ActiveProject.Tasks
If t.Summary Then
Find Field:="Unique ID", Test:="equals", Value:=t.UniqueID
If ActiveCell.Task.UniqueID = t.UniqueID Then
Select Case t.OutlineLevel
' code here
End Select
End If
End If
Next t
End Sub
以下代码仅在所有摘要任务都完全展开时才有效。如果任何摘要任务被折叠,代码就会出错。
我什至不知道要尝试什么来解决这个问题。
Sub ColorSummaryTasks()
Dim t As Task
Dim i As Integer
i = 1
For Each t In ActiveProject.Tasks
If t.Summary Then
SelectRow row:=i, rowrelative:=False
Select Case t.OutlineLevel
Case 1
Font32Ex CellColor:=&H1099FF 'Hex code needs to be reversed
Case 2
Font32Ex CellColor:=&HFF9900
Case 3
Font32Ex CellColor:=&H66FF66
Case 4
Font32Ex CellColor:=&H10CC99
Case 5
Font32Ex CellColor:=&HDD3377
Case 6
Font32Ex CellColor:=&HFF00FF
End Select
End If
i = i + 1
Next t
End Sub
无论摘要任务是否展开,代码都能正常工作的预期结果。发生的情况是,如果摘要任务下有 3 个折叠的行,它不会为接下来的 3 个未折叠的行着色,无论它们是否是摘要任务。 Imgur link 显示了当宏为 运行 并且摘要任务同时折叠和打开时会发生什么。 https://imgur.com/a/3stezhQ
问题源于代码以两种不同的方式循环执行任务。通过 task collection will go through every task whether visible or not. Using the SelectRow 方法循环仅适用于 可见任务.
同步这两种方法的最简单方法是从显示所有任务开始。将此代码放在循环之前*:
FilterApply "All Tasks"
SelectAll
OutlineShowAllTasks
SelectBeginning
* 请注意,这假定任务视图处于活动状态并且分组依据设置为 [无分组]。
或者,您可以 select 使用 Find 方法而不是使用 SelectRow 来完成所需的任务。仅供参考:这将跳过不可见的摘要任务。
Sub ColorSummaryTasks()
Dim t As Task
For Each t In ActiveProject.Tasks
If t.Summary Then
Find Field:="Unique ID", Test:="equals", Value:=t.UniqueID
If ActiveCell.Task.UniqueID = t.UniqueID Then
Select Case t.OutlineLevel
' code here
End Select
End If
End If
Next t
End Sub