我正在将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
答案 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"
它奏效了。
更新:我认为根本的问题是我将计算设置为手动。将计算设置为自动后,问题就消失了。