使用 VBA 从项目中返回过期的非摘要任务的列表



我正在尝试使用 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

但这会失败,并出现编译错误"无效使用 New 关键字"。

对此的任何建议都将非常有帮助。

你基本上是在找一组过期的任务。所以做一个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

最新更新