我有两个列表对象表。我要首先过滤,在其中选择一列,然后将值复制到另一个工作表中的第二个列表对象表中。我用宏记录器尝试了一下,但是结果宏给了我这个错误:rangeclass的pastespecial方法失败。
我怎么了?
Sub NewMacro()
'
' NewMacro Macro
'
'
Sheets("Source").Select
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Range("Source[FirstCol]").Select
ActiveSheet.ListObjects("Source").Range.AutoFilter Field:=4, _
Criteria1:="A"
Selection.Copy
Sheets("Destination").Select
ActiveSheet.ListObjects("Destination").Range.End(xlDown).Select
Selection.ListObject.ListRows.Add AlwaysInsert:=False
Selection.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
答案 0 :(得分:0)
根据您的要求修改代码,它将粘贴到“目标”表的A1中。使用Offset删除标题
Sub FilterAndCopy()
Dim LastRow As Long
With Worksheets("Source")
.UsedRange.AutoFilter
.UsedRange.AutoFilter field:=4, Criteria1:="A"
LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
.UsedRange.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Copy _
Destination:=Sheets("Destination").Range("A1")
End With
ws.AutoFilterMode = False
End Sub