Excel VBA宏:如何删除除一张图纸以外的所有图纸?

Excel VBA宏:如何删除除一张图纸以外的所有图纸?,vba,excel,Vba,Excel,具体来说,我想删除除Sheet6之外的所有工作表,Sheet6是工作表的代码名,但我似乎无法使我的代码正常工作 Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws <> ThisWorkbook.Sheet6 Then Application.DisplayAlerts = False ws.Delete Application.DisplayAlerts

具体来说,我想删除除Sheet6之外的所有工作表,Sheet6是工作表的代码名,但我似乎无法使我的代码正常工作

  Dim ws As Worksheet

  For Each ws In ThisWorkbook.Worksheets
  If ws <> ThisWorkbook.Sheet6 Then

      Application.DisplayAlerts = False
      ws.Delete
      Application.DisplayAlerts = True

  End If

  Next ws
试一试

试一试


这是一个没有VAR的替代品

application.displayalerts = false

with ThisWorkbook
    if .worksheets("sheet6").index > 1 then _
        .worksheets("sheet6").move before:=.sheets(1)
    do while .sheets.count > 1
        .sheets(2).delete
    loop
end with

application.displayalerts = true

这是一个没有VAR的替代品

application.displayalerts = false

with ThisWorkbook
    if .worksheets("sheet6").index > 1 then _
        .worksheets("sheet6").move before:=.sheets(1)
    do while .sheets.count > 1
        .sheets(2).delete
    loop
end with

application.displayalerts = true

删除时,始终向后迭代,尽管Jeeped的答案有不同的解决方法

    Dim iterator as long
    Application.DisplayAlerts = False
    For iterator = ThisWorkbook.Worksheets.Count To 1 Step -1
        With ThisWorkbook.Worksheets(iterator)
            if .CodeName <> "Sheet6" Then .Delete
        End With
    Next iterator
    Application.DisplayAlerts = True

删除时,始终向后迭代,尽管Jeeped的答案有不同的解决方法

    Dim iterator as long
    Application.DisplayAlerts = False
    For iterator = ThisWorkbook.Worksheets.Count To 1 Step -1
        With ThisWorkbook.Worksheets(iterator)
            if .CodeName <> "Sheet6" Then .Delete
        End With
    Next iterator
    Application.DisplayAlerts = True

这会在向前迭代时删除集合中的项。您会发现它将跳过工作表。这会在向前迭代时删除集合中的项。你会发现它会跳过工作表。