【问题标题】:VBA AutoFilter hiding all rows - including the ones matching criteriaVBA AutoFilter 隐藏所有行 - 包括匹配条件的行
【发布时间】:2019-05-07 05:40:14
【问题描述】:

我正在将 VBA 自动筛选应用于 Excel 工作表中的某些结果。它似乎编译正确,但是当我检查结果时,自动筛选器隐藏了匹配和不匹配我应用的条件的行。

如果我手动选择应用的自动过滤器,我会看到我编码的标准输入正确,并且只需单击输入,就会显示标准匹配行。

我使用的是巴西葡萄牙语版本的 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

【问题讨论】:

  • 尝试了你的代码,对我来说效果很好。我认为您的错误不在代码的那一部分。您是否使用正确的工作表调用它?
  • 我正在使用类似:Option Explicit Dim thisSheet As Worksheet Set thisSheet = Sheets("thisSheet") thisSheet.AutoFilterMode = False FilterOff thisSheet
  • 也尝试了该部分并且它有效。我无法重现您的错误。
  • 从这里回答:stackoverflow.com/questions/50331302/… 帮助了我

标签: vba excel autofilter


【解决方案1】:

我在我的一个宏中遇到了类似的情况。我有一张我试图自动过滤的表。我可以手动完成,但不能在 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"

它成功了。

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

【讨论】:

    【解决方案2】:

    我做了这样的事情,它奏效了

    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"
    

    【讨论】:

    • 我在这里尝试了您的代码,但遇到了同样的问题。不过还是谢谢你的建议。
    猜你喜欢
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2018-01-14
    • 2010-10-26
    • 2012-12-24
    • 2023-01-12
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多