ms project vba不改变单元格颜色

时间:2015-10-07 19:53:46

标签: vba ms-project

更新:在下面回答

在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

1 个答案:

答案 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属性。