VBA Excel宏.copy目标错误1004

时间:2015-08-31 15:34:18

标签: excel vba

我希望有人可以帮助我。

我尝试了一切,但我无法修复以下代码:

Sheets(Sheets.Count).Range("A2:J2" & Range("A2:J2").End(xlDown).Row).Copy _
    Destination:=Sheets(Sheets.Count - 3).Range("A2")

如果我离开目的地行并使用以下代码,它就会起作用。

Sheets(Sheets.Count).Range("A2:J2" & Range("A2:J2").End(xlDown).Row).Copy '_
    'Destination:=Sheets(Sheets.Count - 3).Range("A2")

Sheets("All Docs " & Date).Select '(All Docs " & Date) = (Sheets.count-3)
Range("A2").Select
ActiveSheet.Paste

有什么建议吗?很多。

1 个答案:

答案 0 :(得分:0)

我想我知道发生了什么。你试图获得一个“块”的数据,从A2:J2开始,然后到某一行,比如说A10:J10 - 最后得到你要复制的范围A2:J10。 / p>

我认为可能会发生的是您的第2行下没有数据(或者可能不够),因此Excel会将您的.End(xlDown.Row设为1048576

尝试使用:

Sub test()
Dim lastRow As Long
With Sheets(Sheets.Count)
    lastRow = .Range(.Cells(2, 1), .Cells(2, 10)).End(xlDown).Row

    If lastRow >= 1048576 Then
        lastRow = 2
    Else
        lastRow = .Range(.Cells(2, 1), .Cells(2, 10)).End(xlDown).Row
    End If

    .Range(.Cells(2, 1), .Cells(lastRow, 10)).Copy Destination:=Sheets(Sheets.Count - 3).Range("A2")

End With

End Sub

关于使用Sheets(Sheets.Count)的注意事项。这与使用say Sheets("LastSheet")相同。如果更改工作表的顺序,则会影响数据的粘贴位置。 I.E.如果你最右边的工作表有你的数据(我认为它确实如此,因为你用它来获取要粘贴的信息),并且你将它移动到除文件末尾之外的任何地方,那么你的数据将不会正确找到。 Sheets.Count指的是最后一张(最右边)的表格。并且Sheets.Count - 3指的是从最后开始的三张纸(再次移动 表也会导致不粘贴到您想要的位置)。