将已过滤列表对象表的列复制到另一个表时,如何解决错误?

时间:2019-04-05 05:56:40

标签: excel vba

我有两个列表对象表。我要首先过滤,在其中选择一列,然后将值复制到另一个工作表中的第二个列表对象表中。我用宏记录器尝试了一下,但是结果宏给了我这个错误: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

1 个答案:

答案 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