我希望有人可以帮助我。
我尝试了一切,但我无法修复以下代码:
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
有什么建议吗?很多。
答案 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
指的是从最后开始的三张纸(再次移动 表也会导致不粘贴到您想要的位置)。