删除除前x张纸张以外的所有工作表

时间:2013-09-18 00:01:19

标签: excel vba excel-vba

我正在尝试删除除前20页之外的所有工作表

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

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

2 个答案:

答案 0 :(得分:3)

工作表索引会在您删除时更改。因此,当您突然删除了第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

答案 1 :(得分:3)

Do While Worksheets.Count > 20
   Worksheets(21).Delete
Loop