我有这个代码设置来复制第一张表并在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!
答案 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)