VBA - 删除复制数据中最后一行之后的所有行

时间:2012-11-27 15:41:16

标签: excel vba excel-vba excel-2007

我试图找出删除复制数据最后一行之后所有行的代码

我正在将数据从工作表A复制到工作表B.工作表B中已经有数据。如果工作表A中的行数小于工作表B,我想删除未从工作表A复制到工作表B中的所有行。

EG:工作表A = 50行 工作表B = 60行。 我将工作表A复制到工作表B,我想删除不属于工作表A的10行。

到目前为止,这是我的代码:

Dim shCurrentWeek As Worksheet
Dim shPriorWeek As Worksheet
Dim lr3 As Long

Set shCurrentWeek = ActiveWorkbook.Sheets("Current Week")
Set shPriorWeek = ActiveWorkbook.Sheets("Prior Week")
lr3 = shPriorWeek.Range(Rows.Count, "A").End(xlUp).Row

'Copies necessary rows in CurrentWeek tab to PriorWeek tab
shCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")
shPriorWeek.Range("A4:X" & lr3 + 1 & ":A" & Rows.Count).EntireRow.Delete

我相对确定我的lr3设置错误...不确定如何解决。

谢谢!

2 个答案:

答案 0 :(得分:2)

由于您的代码显示shCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")(换句话说,您正在从[起始行4]复制到[起始行2]),您可能会忘记lr3并执行以下(我相信):

shCurrentWeek.Range("A4:X" & lr).Copy shPriorWeek.Range("A2")
shPriorWeek.Range("A" & lr-2 & ":A10000").EntireRow.Delete

希望这有帮助

答案 1 :(得分:1)

您希望lr3成为最后一行的行号(不是与您粘贴的数据相比的偏移量:

lr3 = shPriorWeek.Rows.Count

然后删除语句应为:

shPriorWeek.Range("A4:A" & lr3).EntireRow.Delete

或者首先清除那些粘贴(如评论中所建议的)也是一种好方法,而且非常干净。