复制/粘贴VBA无法解决时出现错误代码1004

时间:2016-12-01 14:00:47

标签: excel vba excel-vba

我一直在看这个5个多小时无法找到正确的解决方案。这不是我的主要交易,而是我在工作中帮助解决的问题。

基本上我是从已过滤行的工作表复制到另一张工作表并将其放在A列的最后一行进行粘贴。

在我做了一些改动之前,这完全找不到,现在它完全坏了,感谢任何帮助,这里是破碎的意大利面条代码....

Sheets("Working Sheet").Select
Selection.Copy
Sheets("Sent Items").Select

Dim LastRow As Long
With ActiveSheet
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
End With

Range("A" & LastRow).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("K:K").EntireColumn.AutoFit
Sheets("Sent Items").Select

导致错误1004说大小需要相同???粘贴会导致错误。任何帮助都很好,一直在寻找答案。

2 个答案:

答案 0 :(得分:1)

由于您要复制过滤的行,因此使用SpecialCells方法始终是一种好习惯。

请参阅下面的重构代码。此外,始终最好avoid using select并直接使用对象。

Dim wsWorking as Worksheet
Set wsWorking = Sheets("Working Sheet")

With wsWorking

   .Select
   Selection.SpecialCells(xlCellTypeVisible).Copy

End With

Dim wsSent as Worksheet
Set wsSent = Sheets("Sent Items")

With wsSent

    Dim LastRow As Long
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1

    .Range("A" & LastRow).PasteSpecial

    .Columns("K:K").EntireColumn.AutoFit

    .Range("A1").Select 'to make sure you end up on that sheet

End With

答案 1 :(得分:1)

您可以按如下方式重构代码:

Worksheets("Working Sheet").Select
Selection.SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Sent Items").Cells(Rows.Count, 1).End(xlUp).Offset(1)

或者,如果您只想粘贴值:

Dim area As Range

Worksheets("Working Sheet").Select
For Each area In Selection.SpecialCells(xlCellTypeVisible).Areas
    Worksheets("Sent Items").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(area.Rows.Count, area.Columns.Count).Value = area.Value
Next area