Ms项目vba不改变细胞颜色



更新:以下回答

在MS Project 2013 Pro中,我从"Number10"字段创建了一个自定义字段"Pri"(表示优先级)。然后我写了下面的VBA例程,它是从VBA表单上的按钮激活的,检查Pri的值并相应地设置单元格的颜色。它工作,除了…

当我设置Pri的值,然后运行例程,然后重置Pri的值,然后重新运行例程时,它不"take"。我可以告诉手表,它已经找到了字段,检测到一个"Select Case"值,并执行CellColor赋值语句。但是在甘特图视图中单元格的颜色不会改变。

我在这里寻找一个模式,我可以看到的是:
1)如果我更新Pri字段(即在第一次添加后更改值),然后更新另一个任务Pri字段,它立即将背景应用于我想要更改的第一个。2)新更新的Pri单元具有微弱的蓝色背景;这是某种"暂定"状态吗?哪些可能不会被VBA读取?如果是这样,如何"刷新"或其他让应用程序接受的值?
=>这似乎是这里描述的"更改高亮显示";我们该怎么做呢?
3)如果我打开并关闭包含任务的Outline部分,它会正确设置颜色。再说一遍,刷新一下?更多的变化突出?

我在开头添加了ScreenUpdating = False/True行,作为对bug报告的响应,然而,没有乐趣。

==>有什么建议吗?

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

这样做:

将此添加到子例程

的开头
Dim wrkCHFlag As Boolean
wrkCHFlag = False
If EnableChangeHighlighting Then
   ToggleChangeHighlighting
   wrkCHFlag = True
End If`

和这个到最后

If wrkCHFlag Then
    ToggleChangeHighlighting
End If

这个链接解释了Change highlight。我通过一个宏发现了VBA togglechangehighlight指令,这导致了enablechangehighlight属性。

最新更新