我将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
我做了类似的事情并且有效
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"
我在我的一个宏中经历了类似的事情。我有一张桌子,我试图自动过滤。我可以手动完成,但不能在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"
它起作用了。
更新:我认为根本问题是我将计算设置为手动。在我将计算设置为自动后,问题就消失了。