更新:在下面回答
在MS Project 2013 Pro中,我创建了一个自定义字段" Pri" (优先级)来自" Number10"领域。然后我编写了下面的VBA例程,该例程从VBA表单上的按钮激活,以检查Pri的值并相应地设置单元格颜色。它有效,除了......
当我设置Pri的值,并运行例程,然后重置Pri的值,并重新运行例程时,它不会"采取"。我可以在监视中看到它找到了这个字段,检测到了一个" Select Case" value,并执行CellColor赋值语句。但是,在甘特图视图中,单元格的颜色没有变化。
我在这里寻找一种模式,我能看到的是:
1)如果我更新Pri字段(即在第一次添加后更改值),然后更新另一个任务Pri字段,它会立即将背景应用于我想要更改的那个。<登记/>
2)新更新的Pri单元具有淡蓝色背景;是某种&#34;暂定的&#34;状态? VBA可能无法阅读哪些内容?如果是这样,如何刷新&#34;或者让应用接受价值的任何东西?
=&GT;这似乎是&#34;改变突出显示&#34;描述here;可以做些什么?
3)如果我打开和关闭包含任务的“轮廓”部分,它会正确设置颜色。再次,某种刷新?更多改变突出显示?
我在开头添加了ScreenUpdating = False / True行,以响应错误报告,但是没有快乐。
==&GT;有什么建议吗?
Sub SetPriorityColors()
ScreenUpdating = False
ScreenUpdating = True
Set ts = ActiveProject.Tasks
For n = 1 To ts.Count
If Not ts(n) Is Nothing Then
ts(n).OutlineShowAllTasks
End If
Next n
For n = 1 To ts.Count
If Not ts(n) Is Nothing Then
Set tsk = ts(n)
wrkName = tsk.Name
wrkID = tsk.ID
SelectTaskField Row:=wrkID, Column:="Number10", RowRelative:=False
If wrkID = 23 Then
a = 1
End If
Select Case tsk.Number10
Case Is >= 9
Font32Ex CellColor:=&HFF99CC
Case Is >= 8
Font32Ex CellColor:=&H66CCFF
Case Is >= 7
Font32Ex CellColor:=&H66FFFF
Case Is = 0
Font32Ex CellColor:=&HFFFFFF
End Select
End If
Next n
SelectTaskField Row:="1", Column:="Number10", RowRelative:=False
End Sub
答案 0 :(得分:0)
这样做:
将其添加到子程序的开头
Dim wrkCHFlag As Boolean
wrkCHFlag = False
If EnableChangeHighlighting Then
ToggleChangeHighlighting
wrkCHFlag = True
End If`
这到最后
If wrkCHFlag Then
ToggleChangeHighlighting
End If
此link解释了更改突出显示。我通过宏发现了VBA ToggleChangeHighlighting指令,这导致了EnableChangeHighlighting属性。