如何使用 VBA 并具有多个条件来过滤 MS Project 中的任务?

问题描述 投票:0回答:1

我有一行 VBA 代码,可以创建一个具有一个条件的过滤器,效果很好:

FilterEdit Name:="temp", TaskFilter:=True, Create:=True, OverwriteExisting:=True, FieldName:="Resource Names", Test:="contains", Value:='Electician', ShowInMenu:=False, ShowSummaryTasks:=False

等效的弹出窗口是:

针对一种条件过滤定义弹出窗口

但是我想过滤包含该字符串且大纲级别大于 2 的行。

此过滤器弹出窗口是:

两种条件的过滤器定义弹出窗口

如果我只需要一次,过滤器弹出窗口会很好地工作,但是我使用的条件会动态变化,因此我需要使用 VBA 定义它。

FilterEdit 的 Microsoft 文档提到了操作参数,但没有如何使用它的示例。

我尝试将函数中的多个参数串在一起,但没有成功:

FilterEdit Name:="temp", TaskFilter:=True, Create:=True, OverwriteExisting:=True, FieldName:="Resource Names", Test:="contains", Value:='Electician', Operation:="And", FieldName:="Outline Level", Test:="is less than or equal to", Value:=2, ShowInMenu:=False, ShowSummaryTasks:=False
    
vba ms-project vba7 vba6
1个回答
0
投票
在过滤器中创建多个条件需要额外调用

FilterEdit 方法,如下所示:

Sub MakeFilter() FilterEdit Name:="temp", TaskFilter:=True, Create:=True, OverwriteExisting:=True _ , FieldName:="Resource Names", Test:="contains", Value:="Electrician" _ , ShowInMenu:=False, ShowSummaryTasks:=False FilterEdit Name:="temp", TaskFilter:=True, FieldName:="", NewFieldName:="Outline Level" _ , Test:="is less than or equal to", Value:="2", Operation:="And" End Sub
请注意,Value 始终是一个字符串,如果需要默认值,则并不总是需要包含可选参数(请参阅上面链接中的文档)。

© www.soinside.com 2019 - 2024. All rights reserved.