Excel VBA:如何一次只取消一个自动filter范围? 代码提供
感谢您来到这个线程。
我拥有的:
– 在行A:G上使用自动filter的报告
我需要的:
– 如果有filter的话,那么不需要过滤特定列的实际代码。
运行下面的代码,不需要过滤A:G的整个范围。
– 在这个例子中,我只想要“F”而不过滤,如果过滤掉了任何其他的filter。
With Sheets("DATA") If .Range("F1").AutoFilter = True Then ActiveSheet.Range("$A$1:$G$59826").AutoFilter Field:=6 Else End If End With
任何和所有的想法,非常感谢! 非常感谢!
尝试这个:
Sub UnFilter() Dim ws As Excel.Worksheet Set ws = Worksheets("DATA") With ws If .AutoFilterMode = True Then If Not Intersect(.AutoFilter.Range, .Range("G1")) Is Nothing Then .Range("$A$1:$G$59826").AutoFilter Field:=.Range("G:G").Column End If End If End With End Sub
这行代码中:
If .Range("F1").AutoFilter = True
…实际上closures整个表单的过滤。 而是我的代码检查工作表是否被过滤:
If .AutoFilterMode = True Then
然后检查filter是否包含G列:
If Not Intersect(.AutoFilter.Range, .Range("G1")) Is Nothing Then
我做了一些改变,使你的代码更灵活一些。 它也使智能感知的ws
对象,这是有帮助的。 (我总是发现各种Filter
相关的属性和方法混淆,特别是没有自动完成。)
这对我有效
Sub UnfilterColumn() With Worksheets("DATA") If Not Worksheets("DATA").AutoFilter Is Nothing Then ThisWorkbook.Sheets("DATA").Range("A1").AutoFilter Field:=6 End If End With End Sub
我刚刚在模块中input了下面的简单代码,对我来说工作得很好。 您将需要更改您的数据范围和字段以匹配您的数据。 我正在清除列A到M中的数据的filter。字段8是列H.
ActiveSheet.Range("$A:$M").AutoFilter Field:=8