我有一个根据布尔值过滤的表。

每当值是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


在澳大利亚英语语言环境中工作:

excel - 将 boolean 自动过滤条件应用于其他语言-LMLPHP

10-05 21:02
查看更多