【问题标题】:Using error handling to delete sheets based on listbox value使用错误处理根据列表框值删除工作表
【发布时间】:2018-11-25 03:36:52
【问题描述】:

所以我有一个列表框,其中包含多个名称和一个值,即“所有名称”选项。选择名称后,将添加一个包含有关该名称的信息的工作表。选择“所有名称”时,会添加多个工作表,每个名称一个。

我正在尝试进行一些错误处理,如果有人两次选择相同的名称表,它将删除现有的名称表。我能够让代码为“所有名称”功能工作,它将删除除仪表板/背景数据之外的所有工作表,然后重新插入名称表。但是,在选择一个名称的情况下,我无法让它工作。

这是我的错误处理代码。我有它去这个 OnError。对于第二部分,我只使用了其中一个潜在的名称值,John。工作表名称和列表框值将相同。

ErrorHandling:

If (Err.Number = 1004 And EmpListBox.Value = "All Names")Then
   For Each ws In Worksheets
     Select Case ws.Name
     Case "Dashboard", "Data", "Employees"
     Case Else
         ws.Delete
     End Select
   Next
'this is where it is not working
ElseIf (Err.Number = 1004 And EmpListBox.Value = "John") Then
    Sheets("John").Delete
Resume Main
End If

【问题讨论】:

  • 如果工作表存在,则使用返回布尔值的函数并调用stackoverflow.com/q/6688131/6241235,然后您可能可以重写上述内容并删除当前的错误处理。

标签: excel vba error-handling


【解决方案1】:

错误处理:

If Err.Number = 1004 Then
    If EmpListBox.Value = "All Names" Then
        For Each ws In Worksheets
            Select Case ws.Name
                Case "Dashboard", "Data", "Employees"
                Case Else
                    ws.Delete
            End Select
       Next
   Else
       Sheets(EmpListBox.Value).Delete
   End If
End If
Resume Main

【讨论】:

  • 非常感谢,效果很好!仍然扔了一张 sheet1 等,但使用 left 功能可以轻松删除这些额外的表格。
猜你喜欢
  • 2023-03-20
  • 2023-03-28
  • 1970-01-01
  • 2021-06-23
  • 2023-03-20
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多