【问题标题】:VBA message automation error element not found未找到 VBA 消息自动化错误元素
【发布时间】:2019-07-24 19:29:13
【问题描述】:

我有一个使用宏并制作许多工作表的工作簿。在一张名为“粘贴”的工作表之后,我希望能够在使用完之后删除随后的工作表。

我从https://stackoverflow.com/a/53544169/11615632 中找到了以下代码,并对其稍作修改以在我的工作簿中使用。

Sub Deleting()
    Dim Indx As Long
    Dim x As Long

    With ThisWorkbook
        On Error Resume Next
        Indx = .Sheets("Paste").Index
        On Error GoTo 0

        If Indx <> 1 Then
            If .Sheets.Count > 2 And Indx < .Sheets.Count Then
                Application.DisplayAlerts = False
                For x = .Sheets.Count To Indx + 1 Step -1
                    .Sheets(x).Delete

                    On Error GoTo 0
                Next x
                Application.DisplayAlerts = False
            End If
        Elseif Indx = 1 Then
            Exit Sub
        End If
    End With
End Sub

但是,当我这样做时,它实际上有效,但是我收到一条错误消息说

“运行时错误'-2147319765':
自动化错误
未找到元素。

.Sheets(x).Delete这一行发现错误

【问题讨论】:

  • 错误在哪一行?
  • 我很抱歉...现在添加它
  • 仅供参考,它是ElseIf,而不是Else If。此外,如果您的工作簿没有名为“粘贴”的工作表,则第一个 If 语句仍将运行(Indx 这里是 0)。我认为这是正确的,也是您想要的……最后,请确保您的 For 循环不会尝试删除剩余的单个工作表。
  • 考虑Indx = 0时会发生什么。
  • 为什么不遍历工作表并像Dim ws as Worksheet / For each ws in Thisworkbook.Worksheets / If ws.Name &lt;&gt; "Paste" and ws.Name &lt;&gt; "Value" Then ws.Delete / Next ws 一样做呢? (这是一种解决方法,因为我不知道为什么您仍然会收到该错误...)

标签: excel vba error-handling automation


【解决方案1】:

由于您知道要保留两个特定工作表(“值”和“粘贴”),而不是使用索引,这可能有点棘手,并且可能并不总是有效,具体取决于它们的顺序/添加顺序,我建议改为查看每个工作表的名称并以这种方式删除(如 cmets 中所述)。

Dim ws as Worksheet
' This next line will suppress the "Confirm Deleting" messagebox
' when you go to delete a worksheet
Application.DisplayAlerts = False
For each ws in ThisWorkbook.Worksheets
    If ws.Name <> "Value" and ws.Name <> "Paste" Then
        ws.Delete
    End If
Next ws
Application.DisplayAlerts = True

(假设宏存储在您要从中删除工作表的工作簿中。如果不是,也许它存储在 Personal.xlsb 中,然后将 ThisWorkbook 切换到 ActiveWorkbook 或更具体的东西。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多