Excel使用代号删除除活动工作表和指定工作表之外的所有工作表

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

我已经提出了这个代码,它的工作原理,但似乎有一个更好的方法来做到这一点:

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 

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

您可以将ThisWorkbook.ActiveSheet.Name添加到第一个Case并避免IF。

另外With Block不需要,因为你只做一件事情。 额外的input不仅仅是简单地引用表单。

确保你重新打开你的警报。

 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 

你可以检查wsNot 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