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
.
教学瞬间:
我发现大多数运算符都可以独立于语言,除了:
And
、Or
、Contains
和 Does 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
我正在尝试为 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
.
教学瞬间:
我发现大多数运算符都可以独立于语言,除了:
And
、Or
、Contains
和 Does 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