在X张数之后删除所有工作表

时间:2017-04-20 10:08:30

标签: excel vba excel-vba

下面的代码应该删除所有工作表,从6开始,当按下此按钮时可能会有很多。

它有效,但是我得到了'删除工作表类的方法失败'之后的错误

   Private Sub UnloadButton_Click()

    Do While Worksheets.Count > 5
        Application.DisplayAlerts = False
        Worksheets(6).Delete
        Application.DisplayAlerts = True
    Loop

    End Sub

我见过的类似问题想要删除所有工作表或命名工作表,我无法真正适应它。

我怀疑这是因为当纸张6不再存在时它试图删除纸张6,但是一旦纸张数量为5,它肯定不会触发另一个循环?

2 个答案:

答案 0 :(得分:1)

感谢David G

我有3'非常隐藏"需要首先删除的工作表,因为我的代码确实在尝试删除隐藏的工作表。

处理其他用户工作表时的重要一课,检查非常隐藏的工作表。

答案 1 :(得分:1)

虽然您的问题是VeryHidden,但请注意您可以删除不带循环的工作表,如下所示

同样在您的原始代码中,建议您将Application.DisplayAlerts = False移到您的循环之外。

 If Worksheets.Count > 5 Then
        Application.DisplayAlerts = False
          Sheets(Application.Transpose(Application.Evaluate("=ROW(6:" & Sheets(Sheets.Count).Index & ")"))).Delete
        Application.DisplayAlerts = True
   End If