2016-11-23 22 views
-1

如何動態添加MS Project時間表中幾項任務的摘要行?在MS Project中添加一個摘要行

Dim ProjTasks = pj.ActiveProject.Tasks 

ProjTasks.Add() 
ProjTasks(1).name = "Summary Line" 
ProjTasks.Add() 
ProjTasks(2).name = "Task1" 
ProjTasks.Add() 
ProjTasks(3).name = "Task2" 
ProjTasks.Add() 
ProjTasks(4).name = "Task3" 

您是否選擇了一堆任務,然後使用「OutlineIndent」命令(看起來很麻煩)?

+0

嘗試下面我的答案中的代碼,讓我知道它是如何工作的:) –

回答

1

嘗試使用下面的VBA解決方案的代碼,一旦你選擇了一些任務(比如說3),它會在它們上面添加一個摘要任務,並縮進這3個任務。

Option Explicit 

Sub AddSummayTask() 

Dim t    As Task 
Dim i    As Long 
Dim RowsSelected() As Long 
Dim FirstRow  As Long 
FirstRow = 10000 

' redim the array of tasks selected to maximum size of 1000 
ReDim RowsSelected(0 To 1000) 
i = 0 

' loop through all selected tasks 
For Each t In ActiveSelection.Tasks 

    ' add current task ID (row) to an array 
    RowsSelected(i) = t.ID 

    ' check for the first row 
    If FirstRow > t.ID Then FirstRow = t.ID 

    i = i + 1 
Next t 

' redim array of tasks selected to actual size 
ReDim Preserve RowsSelected(0 To i - 1) 

' add a Task before the first selected row 
ActiveProject.Tasks.Add Name:="Summary test", before:=FirstRow 

' loop through all rows of selected tasks and indent them 
For i = 0 To UBound(RowsSelected) 
    ActiveProject.Tasks(RowsSelected(i) + 1).OutlineIndent 
Next i 

End Sub