Вернуть значение в задаче над активной ячейкой в ​​MS Project, используя VBA - PullRequest
0 голосов
/ 18 октября 2018

Я знаком с VBA в Excel и не могу понять, как вернуть значение, которое выше активной ячейки в MS Project, с использованием VBA.В 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

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете выбрать ячейки в MS Project, используя различные методы Select объекта Application (например, SelectCellDown , SelectCellRight , SelectBeginning ).Однако вы также можете использовать такой метод:

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
...