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) Сохраните целевые идентификаторы задач, а затем пройдите по всем строкам и сравните идентификатор задачи для каждой строки. Тем не менее, я не нашел способ перебрать все строки и получить идентификатор задачи из строки.
Любые предложения относительно того, как связать выбранную задачу с соответствующей строкой, будут оценены.