我有一个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
仅复制由过滤器选择的行,而不是整个范围。
由于
答案 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