VBA不关心自动过滤器,除非您“告诉”自动过滤器或正在尝试执行可能受自动过滤器影响的操作。
您的以上代码将适用于任何工作表,而不仅仅是“输入”工作表。
这里是它精美的作品(其实我用它所有的时间)的另一种方法
'~~> Remove any filters
ActiveSheet.AutoFilterMode = False
'~~> Filter, offset(to exclude headers) and delete visible rows
With rRange
.AutoFilter Field:=1, Criteria1:=strCriteria
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
'~~> Remove any filters
ActiveSheet.AutoFilterMode = False
这里是当它不工作的情况。
图表不显示被Autofilter过滤的数据。但是,图表也不会显示隐藏行中的数据。 这适用于显示图表中的数据的VBA和非VBA方法。
,但如果我尝试在其中应用autofiler特定细胞写的食堂了。
这取决于你是如何以及在何处写它。
这很好用。请注意,在下面的代码中,行已被过滤并且不可见。但是,我们仍然可以写信给它。
Option Explicit
Sub Sample()
Dim rng As Range
Set rng = Sheets("Sheet1").Range("A1")
rng.AutoFilter Field:=1, Criteria1:="<>1", Operator:=xlAnd
rng.Offset(1, 0).Value = "Sidd"
End Sub
现在让我们来看另一个例子。 这不起作用。假设你有一个从A2到A10的范围(A1有Header),它有各种不同的取值范围,从1到3.现在你想用A2取代A2:A10中的所有值。这个代码不会给你预期的输出if有一个自动过滤器。它不会改变所有的细胞。
Option Explicit
Sub Sample()
Dim rng As Range
Set rng = Sheets("Sheet1").Range("A1:A10")
rng.AutoFilter Field:=1, Criteria1:="<>1", Operator:=xlAnd
rng.Value = "1000"
End Sub
为什么它忽略其中有“1”(即对被滤除行)和写入行的其余部分的细胞?事实上,它与头部混淆以及?
这是相当简单的。拥有Autofilter的想法是根据我们的要求获得相关数据(目前它的数据是<> 1)。当您写入范围rng
时,它将写入该范围内所有可见的单元格(包括具有标题的单元格)。
那么我们在这种情况下做什么?
你有两个选择
1)删除自动筛选 - 做了必要的行动 - 将过滤备用
Sub Sample()
Dim rng As Range
Set rng = Sheets("Sheet1").Range("A1:A10")
'~~> Put Filter
rng.AutoFilter Field:=1, Criteria1:="<>1", Operator:=xlAnd
'~~> Remove Filter
ActiveSheet.AutoFilterMode = False
'~~> Write value to the cells (See how we ignore the header)
Sheets("Sheet1").Range("A2:A10").Value = "1000"
'~~> Put Filter back
rng.AutoFilter Field:=1, Criteria1:="<>1", Operator:=xlAnd
End Sub
2)循环,你在做的范围内的问题
Sub Sample()
Dim rng As Range, cl As Range
Set rng = Sheets("Sheet2").Range("A1:A10")
rng.AutoFilter Field:=1, Criteria1:="<>1", Operator:=xlAnd
For Each cl In rng
'~~> Ignoring the Header
If cl.Row <> 1 then _
cl.Value = "1000"
Next
End Sub
W当你运行上面的代码时,它会写入除标题外的所有单元格。
我建议您阅读Excel的内置帮助,以了解AutoFilters的实际工作方式。这可以帮助您了解它们,从而帮助您处理打开Autofilter的工作表。
HTH
当你在它,定义“搅乱”,以及... – 2012-04-24 06:33:51
过滤行不神奇消失定义“照顾” ...... - 如果你想要遍历throught visibe细胞,谷歌“VBA可见细胞”,例如...我不知道写入隐藏的单元格,但如果这是一个问题,你也可以谷歌“VBA清除自动过滤器”,你知道.. – Aprillion 2012-04-24 06:44:39
我的查询基本上是用户可以使用自动过滤器来隐藏和取消隐藏输入和输出表单(为了使数据更清晰,他会这样做)...但我不想vba关心自动过滤器,它应该像没有任何东西一样工作... – 2012-04-24 08:08:08