繁体   English   中英

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

[英]VBA - Delete all rows after last row in copied data

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

我正在将数据从工作表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设置错误...不知道如何解决。

谢谢!

由于您的代码显示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

希望这可以帮助

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

lr3 = shPriorWeek.Rows.Count

然后,delete语句应显示为:

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

或者,首先清除THEN粘贴(如注释中所建议)也是一种好方法,而且非常干净。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM