出错 - >取消已经完成的工作

时间:2015-06-24 10:43:55

标签: excel-vba error-handling vba excel

有没有办法对代码说,每次出现错误时,取消之前的操作? 例如,我有一个创建6个工作簿的代码,当代码的一半出现错误时,我必须取消每个工作簿并再次启动宏!

提前致谢

2 个答案:

答案 0 :(得分:0)

您可以尝试:

Application.UnDo
错误代码中的

它并不总是有效。

答案 1 :(得分:0)

VBA执行导致撤消历史记录

  • 以任何方式更改接口的代码将清除撤消缓冲区(堆栈)
  • 历史记录是字符串的列表(或集合)

    • Application.CommandBars("Standard").Controls("&Undo").Control.ListCount为0

但你可能会做这样的事情

Option Explicit

Public Sub makeFiles()
    Dim i As Long, currentWB As Long, newWBs As Long

    On Error GoTo cancelAction

    currentWB = Workbooks.Count
    For i = 1 To 6
        Workbooks.Add
        newWBs = newWBs + 1
        ActiveSheet.Cells(1, 1).Value = 4

        'generate an error
        If i = 3 Then Workbooks.Item(Workbooks.Count + 1).Activate
    Next

cancelAction:

    Do While newWBs > 0     'Workbooks.Count > 1
        Workbooks(currentWB + newWBs).Close False
        newWBs = newWBs - 1
    Loop

End Sub