我正在尝试删除除前20页之外的所有工作表
我有这个代码 - 我认为它正在运行,但我现在只运行它,它只删除了一些工作表。
Sub DeleteAll()
i = Worksheets.Count
For x = 21 To i
Application.DisplayAlerts = False
Worksheets(x).Delete
Application.DisplayAlerts = True
Next x
End Sub
答案 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