删除特定的工作表

时间:2018-02-14 19:50:42

标签: vba excel-vba delete-operator worksheet excel

我正在尝试删除工作簿中的所有工作表,除了标题为“main”和“dataset”的两个工作表。我目前的代码似乎只是删除了最后两个工作表。

Option Explicit
Option Base 1

Public Sub DeleteWS()
    Dim mySheet As String, mySheet2 As String, ws As Worksheet
    mySheet = "main"
    mySheet2 = "Dataset"
    For Each ws In Worksheets
        If ws.Name <> mySheet Or ws.Name <> mySheet2 Then
           ActiveWindow.SelectedSheets.Delete
        Else
            Exit Sub
        End If
    Next
End Sub

2 个答案:

答案 0 :(得分:1)

更改此行:

ActiveWindow.SelectedSheets.Delete

到此:

ws.Delete

修复你的If语句

And中使用If,而不是Or

并且请记住,大写和额外空格在这样的比较中都很重要。

我会使用更像这样的东西:

If Trim$(UCase$(ws.Name)) <> Trim$(UCase$(mySheet)) And _
Trim$(UCase$(ws.Name)) <> Trim$(UCase$(mySheet2)) Then

答案 1 :(得分:1)

你也可以这样:

Option Explicit
Option Base 1

Public Sub DeleteWS()
    Dim ws As Worksheet
    For Each ws In Worksheets
        If InStr(ws.Name, “main,Dataset”) = 0 Then ws. Delete
    Next
End Sub