ОБНОВЛЕНИЕ: Ответ ниже
В MS Project 2013 Pro я создал настраиваемое поле «Pri» (для приоритета) из поля «Number10». Затем я написал приведенную ниже процедуру VBA, которая активируется кнопкой в форме VBA, чтобы проверить значение Pri и соответствующим образом установить цвет ячейки. Работает, кроме...
Когда я устанавливаю значение Pri и запускаю подпрограмму, а затем сбрасываю значение Pri и повторно запускаю подпрограмму, она не «принимает». В часах я могу сказать, что они нашли поле, обнаружили значение «Select Case» и выполнили оператор присваивания CellColor. Но цвет ячейки не меняется в представлении диаграммы Ганта.
Я ищу здесь шаблон, и я вижу следующее:
1) Если я обновлю поле Pri (т.е. изменю значение после первого добавления), а затем обновлю другое задача Pri, он сразу же применяет фон к тому, который я хотел сначала изменить.
2) только что обновленная ячейка Pri имеет бледно-голубой фон; это какой-то "предварительный" статус? Что не может быть прочитано VBA? Если да, то как «обновить» или что-то еще, чтобы приложение приняло значение?
=> это похоже на «Изменить выделение», описанное здесь; что с этим можно сделать?
3) если я открываю и закрываю раздел Outline, содержащий задачу, он правильно устанавливает цвет. Опять какая-то обнова? Подсветка дополнительных изменений?
Я добавил строки ScreenUpdating = False/True в начале, в ответ на отчет об ошибке, однако, без радости.
==> Любые предложения?
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