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

时间:2016-06-16 09:51:51

标签: excel vba excel-vba autofilter

我正在将Excel 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

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分: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"

它奏效了。

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