【问题标题】:Excel delete all sheets except active sheet and specified sheets using codenamesExcel 使用代号删除除活动工作表和指定工作表之外的所有工作表
【发布时间】:2017-01-19 15:52:40
【问题描述】:

使用它们的 CodeNames 删除活动工作簿中所有工作表的最佳方法是什么,除了选定/活动工作表和 4 个指定工作表?

我想出了这段代码,它可以工作,但似乎有更好的方法来做到这一点:

Sub delete_test()


Application.ScreenUpdating = False
Application.DisplayAlerts = False

'Deletes all sheets except ActiveSheet and specified sheets using codenames
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
Select Case ws.CodeName
Case "Sheet1", "Sheet2", "Sheet3", "Sheet4"
        Case Else
    With ws

If ws.NAme <> ThisWorkbook.ActiveSheet.NAme Then
ws.Delete
End If

    End With
End Select
Next


End Sub

【问题讨论】:

  • 对于有效但您认为可以改进的代码,您可能会通过在Code Review 上发布此问题来获得更好的帮助。

标签: excel vba


【解决方案1】:

你的代码已经相当简洁了。

您可以将ThisWorkbook.ActiveSheet.Name 添加到第一个案例并避免使用 IF。

也不需要 With 块,因为你只做一件事。额外的输入不仅仅是指工作表。

确保重新打开警报。

Sub delete_test()


Application.ScreenUpdating = False
Application.DisplayAlerts = False

'Deletes all sheets except ActiveSheet and specified sheets using codenames
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
    Select Case ws.CodeName
        Case "Sheet1", "Sheet2", "Sheet3", "Sheet4", ThisWorkbook.ActiveSheet.CodeName
        Case Else
            ws.Delete
    End Select
Next

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

【讨论】:

  • 我试过这样做,但它仍然会删除活动工作表。
  • @luke 抱歉看到编辑,忘记你在使用代号。
【解决方案2】:

您可以检查 ws 是否为 Not ActiveSheet ,然后检查 CodeName 是否不是您的标准之一。

Sub delete_test()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

'Deletes all sheets except ActiveSheet and specified sheets using codenames
Dim ws As Worksheet

For Each ws In ThisWorkbook.Sheets
    If Not Worksheets(ws.Name) Is ActiveSheet Then '<-- first check if sheet is not active sheet
        Select Case ws.CodeName
            Case "Sheet1", "Sheet2", "Sheet3", "Sheet4"

            Case Else
                ws.Delete
        End Select
    End If
Next ws 

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多