我熟悉Excel中的VBA,并且我一生都无法解决如何使用VBA返回MS Project中activecell之上的值。在Excel中,我只会使用诸如activecell.offset(-1,0).value之类的东西。
在下面的代码中(我错误地)使用了OFFSET,因此需要一些可以替换该代码的东西才能使我的宏正常工作。
当Text4列中的值更改为下一个任务(否则缩进)时,代码将尝试添加新的任务摘要。
提前谢谢!
Sub Add_Task_Summaries()
'Add a Summary Task when the text in the Learning Path column changes and
indent otherwise
Dim T As Task
Dim LP As String
Dim RowNo As Long
Dim TU As Integer
For Each T In ActiveProject.Tasks
If T.Text4 <> "" And T.Summary = False Then
If T.Text4 = T.Text4.Offset(-1, 0) Then 'INCORRECT SYNTAX
T.OutlineIndent
ElseIf T.Text4 <> T.Text4.Offset(-1, 0) Then 'INCORRECT SYNTAX
LP = T.Text4
T.Add Name:=LP, before:=ActiveSelection.Tasks
End If
End If
Next T
End Sub
答案 0 :(得分:0)
您可以通过使用Application对象的各种Select方法(例如SelectCellDown,SelectCellRight,SelectBeginning)在MS Project中选择单元格。但是,您也可以使用如下方法:
Sub Add_Task_Summaries()
'Add a Summary Task when the text in the Learning Path column changes
'and indent otherwise
Dim T As Task
Dim S As Task
Dim LP As String
For Each T In ActiveProject.Tasks
If T.Text4 > "" And Not T.Summary Then
If LP <> T.Text4 Then
LP = T.Text4
Set S = ActiveProject.Tasks.Add(LP & " - Summary", T.ID)
S.OutlineLevel = T.OutlineLevel
End If
T.OutlineIndent
End If
Next T
End Sub