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

时间:2015-06-03 09:19:34

标签: excel vba excel-vba

我有这个代码设置来复制第一张表并在Sheet1之后重命名它。之后,应该选择新工作表,删除新工作表上的前20行,并按新工作表中的K列进行排序。它正在这样做,但它是在第一个工作表上做的。

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!

1 个答案:

答案 0 :(得分:1)

使用Activate或Select或ActivateSheet指定您想要的某个实例实际上是一种在VBA中工作的令人困惑的方式。这是一个很好的例子。除非绝对必要,否则我建议避免使用“主动”或“选择”。很少需要它。

尝试:

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

(我们没有指定从哪个工作表中选择K2)