VBA AutoFilter隐藏所有行 - 包括匹配条件的行

问题描述 投票:2回答:2

我将VBA AutoFilter应用于excel表中的某些结果。它似乎正确编译,但是当我检查结果时,AutoFilter隐藏了匹配的行并且与我应用的条件不匹配。

如果我手动选择已应用的自动过滤器,我会看到我编码的条件输入正确,只需单击回车键,就会显示匹配行的条件。

我正在使用巴西葡萄牙语版本的Excel,不确定是否可能是这个问题。

这是我尝试过的:

Sub FilterOff(ByVal thisSheet)
    thisSheet.Activate
    With thisSheet
        .AutoFilterMode = False
        .Range("A1:F1").AutoFilter
        .Range("A1:F1").AutoFilter Field:=4, Criteria1:=">0.01", _
        Operator:=xlOr, Criteria2:="<-0.01"
        .Range("A1:F1").AutoFilter Field:=5, Criteria1:=">100"
    End With
End Sub
excel vba excel-vba autofilter
2个回答
0
投票

我做了类似的事情并且有效

Range("A1:B6").AutoFilter
    ActiveSheet.Range("$A$1:$B$6").AutoFilter Field:=1, Criteria1:="=10", _
        Operator:=xlOr, Criteria2:="=30"
    ActiveSheet.Range("$A$1:$B$6").AutoFilter Field:=2, Criteria1:="100"

0
投票

我在我的一个宏中经历了类似的事情。我有一张桌子,我试图自动过滤。我可以手动完成,但不能在VBA中,即使我完全复制了录制功能给我的内容。我也无法在VBA中复制+粘贴为值,但​​我可以手动。

对我有用的是保存并关闭工作簿,然后重新打开它并应用自动过滤器。具体来说,我使用了这个:

tempWb.SaveAs ("dir\temp.xlsx")
tempWb.Close (0)
Set rptWb = Workbooks.Open("dir\temp.xlsx")
Set rptWs = rptWb.Sheets(1)
rptWs.Range(rptWs.Cells(1, 1), rptWs.Cells(lstRow, lstCol)).AutoFilter Field:=20, Criteria1:="=NO RECORD"

它起作用了。

更新:我认为根本问题是我将计算设置为手动。在我将计算设置为自动后,问题就消失了。

© www.soinside.com 2019 - 2024. All rights reserved.