Вернуть список просроченных не сводных задач из проекта с использованием VBA - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь извлечь список просроченных несводных задач из проекта с использованием VBA.До сих пор у меня есть этот код:

Function GetOverdueTasks() As Tasks
    Dim ProjTasks As Tasks
    Dim ProjTask As Task
    Dim OverdueTasks As Tasks

    Set ProjTasks = ActiveProject.Tasks
    For Each ProjTask In ProjTasks
        If Not (ProjTask Is Nothing) Then
            If ProjTask.Summary = False Then
                If ProjTask.PercentComplete <> 100 And ProjTask.Finish < Now() Then
                    OverdueTasks.Add (Task)
                End If
            End If
        End If
    Next ProjTask
    Set GetOverdueTasks = OverdueTasks
End Function

Однако, это терпит неудачу в строке OverdueTasks.Add (Task), потому что Tasks объект OverdueTasks не инициализирован.Однако я не могу найти, как инициализировать объект Tasks.Я пытался использовать

Set OverdueTasks = New Tasks

Но это не удается из-за ошибки компиляции "Недопустимое использование нового ключевого слова".

Любые предложения по этому вопросу будут очень полезны.

1 Ответ

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

Вы в основном ищете группу просроченных задач.Так что сделайте Collection.

Option Explicit

Private Sub TestFindOverdue()
    Dim overdueTasks As Collection
    Set overdueTasks = GetOverdueTasks

    '--- do something with the overdue tasks here
End Sub

Private Function GetOverdueTasks() As Collection
    Dim ProjTasks As Tasks
    Dim ProjTask As Task
    Dim overdueTasks As Collection

    Set ProjTasks = ActiveProject.Tasks
    For Each ProjTask In ProjTasks
        If Not (ProjTask Is Nothing) Then
            If ProjTask.Summary = False Then
                If ProjTask.PercentComplete <> 100 And ProjTask.Finish < Now() Then
                    overdueTasks.Add ProjTask, ProjTask.UniqueID
                End If
            End If
        End If
    Next ProjTask
    Set GetOverdueTasks = overdueTasks
End Function
...