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 が削除されます。

解決策の 1 つは、最後のシートから逆順にシートを削除することです。例えば:

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 に答える