【问题标题】:Delete all visible sheets but a specific sheet删除所有可见工作表,但特定工作表
【发布时间】:2019-12-19 14:30:59
【问题描述】:

下面的代码有问题。

当用户关闭工作簿时,我想删除除特定工作表之外的所有可见工作表。 这是代码:

Private Sub workbook_BeforeClose(cancel As Boolean)
Dim ws As Worksheet

For Each ws In Workbook
    If ws.Visible = xlSheetVisible Then
        If ws.Name <> "Choose BU" Then ws.Delete
    End If
Next ws

End Sub

它说“需要对象”,但我认为默认工作表是 VBA 中的对象?

【问题讨论】:

  • For Each ws In ThisWorkbook.Worksheets
  • 在您的代码顶部键入Option Explicit...
  • 我的天啊,当然……放屁,谢谢。
  • 或稍短的For Each ws in Me.Worksheets,因为这是在ThisWorkbook 模块中。
  • 您的代码将删除除“Choose BU”之外的所有工作表,而不是“Choose BU”之后的所有工作表,不是吗。

标签: excel vba


【解决方案1】:

你可以试试:

Option Explicit

Sub test()

    Dim ws As Worksheet

    Application.DisplayAlerts = False

    For Each ws In ThisWorkbook.Worksheets

        With ws

            If .Visible = True And .Name <> "Choose BU" Then
                .Delete
            End If

        End With

    Next ws

    Application.DisplayAlerts = True

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    相关资源
    最近更新 更多