删除前x页数的所有工作表

我试图删除前20张表以外的所有工作表

我有这个代码 – 我认为是工作,但我现在只是运行它,它只会删除一些表。

Sub DeleteAll() i = Worksheets.Count For x = 21 To i Application.DisplayAlerts = False Worksheets(x).Delete Application.DisplayAlerts = True Next x End Sub 

表格索引在删除时会发生变化。 所以当你删除表格21时,你会有另外一个表格21被跳过,表格22被删除等。

一种解决方法是从最后一张开始,以相反的顺序删除纸张。 例如:

 Sub DeleteAll() i = Worksheets.Count For x = i to 21 Step -1 '# <- please note the change here Application.DisplayAlerts = False Worksheets(x).Delete Application.DisplayAlerts = True Next x End Sub 
 Do While Worksheets.Count > 20 Worksheets(21).Delete Loop