1

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

我有这段代码——我认为它可以工作,但我现在才运行它,它只会删除一些工作表。

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

2 回答 2

4
Do While Worksheets.Count > 20
   Worksheets(21).Delete
Loop
于 2013-09-18T00:13:15.697 回答
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
于 2013-09-18T00:11:40.087 回答