MS Project相当于“xlAnd”。逻辑运算符的枚举

时间:2018-02-07 08:59:56

标签: vba ms-office ms-project

我正在尝试在VBA中为MS Project编写一个独立于语言的过滤器。我正在使用语法:

FilterEdit (Name, Taskfilter, Create, Fieldname, Test, Value, Operation...)

我设法让Fieldnames和Tests与语言无关,但我对Operation:=表达式感到困惑。对于英语语言环境,可以编写:Operation:="and"但这对其他语言环境不起作用。

有没有办法将逻辑运算符(和/或)编写为枚举? (不是字符串?)

对于Excel,可以编写xlAnd,而Project有许多以Pj开头的枚举,即。 PjTaskStart。我也知道有一个Filter.LogicalOperationType,但我还没弄清楚这是否适合我。我也尝试过FieldConstantToFieldName,但我认为逻辑运算符没有字段名?

我知道我可以使用If LocaleID = xxxx Then...,但我不想假设将使用哪种语言环境。

编辑:我解决了问题的第一部分! 将其留空Operation:="",Project返回“And”。但我还没想出如何回归“或”......

1 个答案:

答案 0 :(得分:0)

Operation:=""适用于FilterEdit,但不适用于SetAutoFilter。 所以我最终使用了可怕的If LocaleID

教学时刻:

我发现大多数运营商可以独立于语言,除了:
AndOrContainsDoes Not Contain 这些需要为每个地区翻译。

我会在一分钟内找到。首先,我将列出所有与语言无关的运算符:
<小于<=小于或等于>大于>=大于或等于
=等于<>不等于

我找到语言相关运算符所需翻译的技巧是以下MS Office Support页面。

请注意英文支持页面中名为“筛选特定文字”的类别。在这里,我们可以阅读我们需要的所有“单词”。现在转到网页底部并更改语言:Button to switch Locale
这将打开一个列出所有不同语言的新页面(不是特定于语言环境的)。记住您在英语中找到Contains单词的位置,然后将语言更改为“Magyar(Magyarorzág)”,我们现在可以在Magyar中看到Contains = "Tartalmazza"

下一步是谷歌“马扎尔语言”,并了解这实际上等于匈牙利语。所以现在你可以转到MSDN web page看匈牙利语= LocaleID:1038。

将所有这些放在VBA中使您必须编写以下代码:

Dim LocalContains As String

If LocaleID = 1038 Then
    LocalContains = "Tartalmazza" 'Hungarian
ElseIf LocaleID = 1044 Then
    LocalContains = "inneholder"  'Norwegian
Else
    LocalContains = "contains"    'English
End If