Rows.Delete正在从错误的工作表中删除

我有这样的代码设置来复制第一个工作表并将其重命名Sheet 1后。 之后,应该select新的工作表,删除新工作表的前20行,然后按新的工作表K列进行sorting。 它正在这样做,但它是在第一张工作表上进行的。

Worksheets(1).Copy After:=Worksheets(1) ActiveSheet.Name = "New Name" Worksheets(2).Select Rows("1:20").Delete Columns("A:U").Sort key1:=Range("K2"), order1:=xlDescending, Header:=xlYes 

我尝试过几种不同的方式来激活工作表,但没有一个真正起作用。 谢谢您的帮助!

* *想通了,我在工作表本身运行它,而不是一个新的模块….感谢大家的帮助! 如果我可以避免它,不要再使用.select了!

使用Activate或者Select或者ActivateSheet来指定你想要的东西的实例实际上是一种令人困惑的在VBA中工作的方法。 这是一个很好的例子。 我build议避免任何与“主动”或“select”,除非绝对必要的。 对此很less有需要。

尝试:

 Worksheets(1).Copy After:=Worksheets(1) Worksheets(2).Name = "New Name" Worksheets(2).Rows("1:20").Delete Worksheets(2).Columns("A:U").Sort key1:=Range("K2"), order1:=xlDescending, Header:=xlYes 

编辑:

 Worksheets(2).Columns("A:U").Sort key1:=Range("K2"), order1:=xlDescending, Header:=xlYes 

应该:

 Worksheets(2).Columns("A:U").Sort key1:=Worksheets(2).Range("K2"), order1:=xlDescending, Header:=xlYes 

(我们没有指定从哪个表中selectK2)