2015-10-07 3 views
0

UPDATE: Ответил нижемс проект VBA не изменяя ячеечная Color

В MS Project 2013 Pro, я создал пользовательское поле "Pri" (для приоритета) из поля "Number10". Затем я написал приведенную ниже процедуру VBA, которая активируется с помощью кнопки в форме VBA, чтобы проверить значение Pri и соответственно установить цвет ячейки. Он работает, за исключением ...

Когда я устанавливаю значение Pri и запускаю процедуру, а затем сбрасываю значение Pri и повторно запускаю процедуру, она не «принимает». Я могу сказать, что он нашел поле, обнаружил значение «Выбрать случай» и выполнил оператор присваивания CellColor. Но цвет ячейки не изменяется в представлении диаграммы Ганта.

Я ищу шаблон здесь, и что я вижу:
1) Если я обновлю Pri поля (т.е. изменить значение после первого дополнения), а затем обновить другое задачи поля Pri , он немедленно применяет фон к тому, который я хотел сначала изменить.
2) недавно обновленная камера Pri имеет слабый синий фон; это какой-то «предварительный» статус? Что не может быть прочитано VBA? Если да, то как «обновить» или что угодно, чтобы приложение могло принять значение?
=> это, как представляется, «Change Highlighting», описанное here; что с этим можно сделать?
3) Если я открываю и закрываю раздел «Контур», содержащий задание, он правильно устанавливает цвет. Опять же, какое-то обновление? Больше изменений Выделение?

Я добавил 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 

ответ

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.

Смежные вопросы