将布尔自动筛选条件应用于不同的语言
Apply boolean autofilter criteria to different language
我有一个 table,我根据布尔值对其进行过滤。
每当值为 TRUE
时,我希望它显示。
我使用自动过滤器和以下工作 VBA 代码:
lCol = tbl.ListColumns("xFilter").Index
With tbl
If .AutoFilter.FilterMode Then .AutoFilter.ShowAllData
.Range.AutoFilter Field:=lCol, Criteria1:="TRUE"
End With
我正在研究 Excel 的英语实例。当我在荷兰语的实例上尝试此操作时,我必须手动将条件设置为 WAAR
(荷兰语相当于 TRUE
)。
我可以添加 并说明:
Criteria1:="WAAR", Operator:=xlOr, Criteria2:="TRUE"
但是,如果我去德国和西班牙,我需要写:
Criteria1:="WAAR", Operator:=xlOr, Criteria2:="TRUE", Operator:=xlOr, Criteria3:="WAHR", Operator:=xlOr, Criteria4:="VERDADERO"
有没有办法让 Criteria1:="TRUE"
以任何语言工作?
您可以尝试使用 CBool
函数来避免在设置 AutoFilter
时为 TRUE
使用字符串或依赖于语言的值。
CBool(1)
在任何语言环境中都应该是 'true'。
Option Explicit
Sub TestLanguageIndependentBooleanForAutoFilter()
Dim ws As Worksheet
Dim tbl As ListObject
Dim lCol As Long
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set tbl = ws.ListObjects(1)
lCol = tbl.ListColumns("xFilter").Index
With tbl
If .AutoFilter.FilterMode Then .AutoFilter.ShowAllData
.Range.AutoFilter Field:=lCol, Criteria1:=CBool(1)
End With
End Sub
在澳大利亚英语语言环境中工作:
试试这个:
条件 1:=CStr(真)
其他答案在俄语中对我不起作用 Excel,我试图在俄语中进行一些独立于语言的编码。最后,我不得不使用一组两个单元格,在其中手动输入 TRUE
和 FALSE
值(俄语中的 ИСТИНА
和 ЛОЖЬ
)并引用它们的 .Text
(这很重要!)而不是 Criteria
中的 .Value2
。似乎问题在于 Criteria
使用过滤器中单元格中的 .Text
,这可能不等于文本 True
和 False
.
显然,此解决方案远非完美,但到目前为止,这是我找到的唯一方法。 Excel 将布尔值存储为 0
和 1
很好:如果您将工作簿作为 zip 文件打开,您可以看到像 sheet1.xml
这样的文件,其中包含这样的条目对于布尔单元格:
<c r="B5" s="6" t="b">
<v>0</v>
</c>
t
似乎表示值的类型——在本例中为 b
,这意味着 boolean
.
我有一个 table,我根据布尔值对其进行过滤。
每当值为 TRUE
时,我希望它显示。
我使用自动过滤器和以下工作 VBA 代码:
lCol = tbl.ListColumns("xFilter").Index
With tbl
If .AutoFilter.FilterMode Then .AutoFilter.ShowAllData
.Range.AutoFilter Field:=lCol, Criteria1:="TRUE"
End With
我正在研究 Excel 的英语实例。当我在荷兰语的实例上尝试此操作时,我必须手动将条件设置为 WAAR
(荷兰语相当于 TRUE
)。
我可以添加
Criteria1:="WAAR", Operator:=xlOr, Criteria2:="TRUE"
但是,如果我去德国和西班牙,我需要写:
Criteria1:="WAAR", Operator:=xlOr, Criteria2:="TRUE", Operator:=xlOr, Criteria3:="WAHR", Operator:=xlOr, Criteria4:="VERDADERO"
有没有办法让 Criteria1:="TRUE"
以任何语言工作?
您可以尝试使用 CBool
函数来避免在设置 AutoFilter
时为 TRUE
使用字符串或依赖于语言的值。
CBool(1)
在任何语言环境中都应该是 'true'。
Option Explicit
Sub TestLanguageIndependentBooleanForAutoFilter()
Dim ws As Worksheet
Dim tbl As ListObject
Dim lCol As Long
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set tbl = ws.ListObjects(1)
lCol = tbl.ListColumns("xFilter").Index
With tbl
If .AutoFilter.FilterMode Then .AutoFilter.ShowAllData
.Range.AutoFilter Field:=lCol, Criteria1:=CBool(1)
End With
End Sub
在澳大利亚英语语言环境中工作:
试试这个:
条件 1:=CStr(真)
其他答案在俄语中对我不起作用 Excel,我试图在俄语中进行一些独立于语言的编码。最后,我不得不使用一组两个单元格,在其中手动输入 TRUE
和 FALSE
值(俄语中的 ИСТИНА
和 ЛОЖЬ
)并引用它们的 .Text
(这很重要!)而不是 Criteria
中的 .Value2
。似乎问题在于 Criteria
使用过滤器中单元格中的 .Text
,这可能不等于文本 True
和 False
.
显然,此解决方案远非完美,但到目前为止,这是我找到的唯一方法。 Excel 将布尔值存储为 0
和 1
很好:如果您将工作簿作为 zip 文件打开,您可以看到像 sheet1.xml
这样的文件,其中包含这样的条目对于布尔单元格:
<c r="B5" s="6" t="b">
<v>0</v>
</c>
t
似乎表示值的类型——在本例中为 b
,这意味着 boolean
.