0

我有一个将表格复制到另一个电子表格中的 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

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

4

2 回答 2

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

我不存储过滤器选择,因为我不在乎让所有内容都未经过滤。

于 2013-01-10T11:09:05.580 回答
0

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

Sub UnfilterMe(Sheet As Worksheet)
    Sheet.AutoFilterMode = False
End Sub
于 2013-06-19T15:50:20.730 回答