我有一个根据布尔值过滤的表。
每当值是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
的荷兰语)。我可以添加multiple criteria并声明:
Criteria1:="WAAR", Operator:=xlOr, Criteria2:="TRUE"
但是,如果我接下来去德国和西班牙,我需要写:
Criteria1:="WAAR", Operator:=xlOr, Criteria2:="TRUE", Operator:=xlOr, Criteria3:="WAHR", Operator:=xlOr, Criteria4:="VERDADERO"
有没有办法让
Criteria1:="TRUE"
用任何语言工作? 最佳答案
设置CBool
时,可以尝试使用TRUE
函数来避免对AutoFilter
使用字符串或语言相关的值。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
在澳大利亚英语语言环境中工作: