Excel VBA:复制范围内的所有行,包括由过滤器隐藏的任何行

时间:2013-01-10 09:51:13

标签: excel vba filter copy

我有一个VBA宏,可以将表复制到另一个电子表格中。这张桌子上有一个过滤器,因为我经常需要深入挖掘东西,而且我经常会对行进行过滤。如何确保我的宏将复制表中的所有行而不仅仅是过滤器选择的行?

目前我正在这样做:

Private Sub PopulateTab(SourceRange As Range, TargetRange As Range)

  SourceRange.Copy

  With TargetRange
    .PasteSpecial Paste:=xlPasteAll
    .PasteSpecial Paste:=xlPasteColumnWidths
    .PasteSpecial Paste:=xlPasteValues
  End With

End Sub

仅复制由过滤器选择的行,而不是整个范围。

由于

2 个答案:

答案 0 :(得分:0)

回答我自己的问题:我先解开范围:

Sub Unfilter(Sheet As Worksheet)

  Dim Fltr As Filter
  Dim iFiltr As Long

  With Sheet.AutoFilter
    For iFiltr = 1 To .Filters.Count
        If .Filters(iFiltr).On Then
            .Range.AutoFilter Field:=iFiltr
        End If
    Next iFiltr
  End With

End Sub

我不存储过滤器选择,因为不关心是否未经过滤。

答案 1 :(得分:0)

如果您不需要记住过滤器,则只需要一行代码:

Sub UnfilterMe(Sheet As Worksheet)
    Sheet.AutoFilterMode = False
End Sub