我正在尝试删除工作簿中的所有工作表,除了标题为“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
答案 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