MS 项目相当于 "xlAnd"。逻辑运算符的枚举

MS Project equivalent to "xlAnd". Enumeration for logical operators

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

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

我已经设法让字段名和测试独立于语言,但我对 Operation:= 表达式感到困惑。对于英语语言环境,人们会这样写:Operation:="and" 但这不适用于其他语言环境。

有没有办法把逻辑运算符(and/or)写成枚举? (不是字符串?)

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

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

编辑: 我解决了问题的第一部分! 将其留空 Operation:="",Project returns "And"。但是我还没有想出如何 return "Or"...

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

教学瞬间:

我发现大多数运算符都可以独立于语言,除了:
AndOrContainsDoes Not Contain.
这些需要针对每个语言环境进行翻译。

我会在一分钟内解决这些问题。首先,我将列出所有与语言无关的运算符:
< 小于
<= 小于等于
> 大于
>= 大于等于
= 等于
<> 不等于

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

注意英文支持页面中名为 "Filter for specific text" 的类别。在这里我们可以读取所有我们需要的"words"。现在转到网页底部并更改语言:
这将打开一个新页面,列出所有不同的语言(不特定于语言环境)。记住您在英语中找到 Contains 的单词,然后将语言更改为例如 "Magyar (Magyarorzág)",我们现在可以在 Magyar 中看到 Contains = "Tartalmazza"

下一步是 google "Magyar languge" 并了解这实际上等于匈牙利语。所以现在你可以去这个 MSDN web page 看看 Hungarian = 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