复制并粘贴下一个空行的设置范围

这应该是简单的,但我有一个艰难的时间..我想复制单元格A3到E3,并将其粘贴到另一个工作表上的下一个空行。 我已经在较长的代码string之前使用这个代码..但我不得不调整它,这是不工作的这一次。 当我运行下面的代码时,我得到了“应用程序定义或对象定义的错误”。 所有的帮助表示赞赏。

Private Sub CommandButton1_Click() Dim lastrow As Long lastrow = Range("A65536").End(xlUp).row Range("A3:E3").Copy Destination:=Sheets("Summary Info").Range("A:A" & lastrow) End Sub 

没有首先限定工作表,请小心“范围(…)”,因为它将使用当前活动的工作表进行复制。 完全符合这两张表格是最好的。 请给这个镜头(请用复制工作表更改“Sheet1”):

编辑:编辑粘贴值仅基于下面的评论。

 Private Sub CommandButton1_Click() Application.ScreenUpdating = False Dim copySheet As Worksheet Dim pasteSheet As Worksheet Set copySheet = Worksheets("Sheet1") Set pasteSheet = Worksheets("Sheet2") copySheet.Range("A3:E3").Copy pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues Application.CutCopyMode = False Application.ScreenUpdating = True End Sub 

代码不工作的原因是因为lastrow是从当前活动的任何表单开始测量的,“A:A500”(或其他数字)不是有效的范围参考。

 Private Sub CommandButton1_Click() Dim lastrow As Long lastrow = Sheets("Summary Info").Range("A65536").End(xlUp).Row ' or + 1 Range("A3:E3").Copy Destination:=Sheets("Summary Info").Range("A" & lastrow) End Sub 

你也可以试试这个

 Private Sub CommandButton1_Click() Sheets("Sheet1").Range("A3:E3").Copy Dim lastrow As Long lastrow = Range("A65536").End(xlUp).Row Sheets("Summary Info").Activate Cells(lastrow + 1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

下面是运行良好的代码,但是每当<=11的条件在表单“计算器”中遇到时,我的值在表单“Final”中重叠

我希望您能够支持我修改代码,以便光标移动到下一个空白单元格,并且值会像列表一样加起来。

 Dim i As Integer Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Calculator") Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Final") For i = 2 To ws1.Range("A65536").End(xlUp).Row If ws1.Cells(i, 4) <= 11 Then ws2.Cells(i, 1).Value = Left(Worksheets("Calculator").Cells(i, 1).Value, Len(Worksheets("Calculator").Cells(i, 1).Value) - 0) ws2.Cells(i, 2) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:D"), 4, False) ws2.Cells(i, 3) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:E"), 5, False) ws2.Cells(i, 4) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:B"), 2, False) ws2.Cells(i, 5) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:C"), 3, False) End If Next i