2015-10-17 4 views
2

Update: Ответил нижемс проект VBA ассоциировать задачи с строки

Я построил форму в моем MS Project VBA, который имеет некоторые кнопки форматирования на нем, в частности, кнопку «Готово», который изменяет шрифт выбранного ячейки к серому и зачеркнутому. Подпрограмма ниже работает отлично, за исключением ...

Sub SetTaskNameFontDone() 

Dim T As Task 

If Not (ActiveSelection.Tasks Is Nothing) Then 
    For Each T In ActiveSelection.Tasks 
     ' Test for blank task row 
     If Not (T Is Nothing) Then 
       SelectTaskField Row:=T.ID, Column:="Name", RowRelative:=False 
       Font32Ex Color:=8355711 
       Font32Ex Strikethrough:=True 
     End If 
    Next T 
End If 
End Sub 

проблема, которую я столкнулся на это, что номер строки, кажется, номер физического местоположения, то есть положение с верхней части листа. Поэтому, если вы «закрываете» задачу с подзадачами, номер строки больше не совпадает с идентификатором задачи, а форматирование применяется к неправильной строке.

Case 1: Sheet when task is open: 
VBA Row #  TaskID  Task 
1    1  ParentTask1 (open) 
2    2   SubTask1-1 
3    3  ParentTask2 

Case 2: Sheet when task is closed (note change in row number) 
VBA Row #  TaskID  Task 
1    1  ParentTask1 (closed) 
2    3  ParentTask2 

два возможных подхода:

1) Я мог бы сделать OutlineShowAllTasks в начале подпрограммы, но изменяет способ появляется очертание. Я не нашел индикатора, для которого задачи открыты, поэтому я не могу запомнить и восстановить это в качестве компенсации для OutlineShowAllTasks.

2) Сохраните целевые идентификаторы задач, а затем пройдите по всем строкам и сравните идентификатор задачи для каждой строки. Тем не менее, я не нашел способ перебрать все строки и получить идентификатор задачи из строки.

Любые предложения относительно того, как связать выбранную задачу с соответствующей строкой, будут оценены.

ответ

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