为什么 VBA 模块动作不能反转?即,Ctrl+Z'ed

Why can't VBA module actions be reversed? i.e., Ctrl+Z'ed

在过去的几个月里,我一直在编写 VBA 脚本,并且注意到,如果我编写一个作用于 Excel workbook/sheet 的模块,我无法 Ctrl+Z 这些操作。据我所知,这适用于模块执行的所有操作。

一个简单的例子是:

Sub test()
  Cells(1,1) = "Hello World"
End Sub

为什么模块操作不能是 "reversed"?即,通过 Ctrl+Z 或使用 'undo' 箭头撤消。

P.S。我认为这种行为也可能适用于任何 MS 应用程序中的任何模块操作,不过,我很容易出错。

不,它们无法逆转,但您可以使用我的方法:

您可以在每个宏的开头保存您的工作簿 (ActiveWorkbook.Save) 然后如果您想撤消:

Const pathToTheFile as String = "C:\Users\VbaProject\"
Sub Undo()

    wb = ActiveWorkbook.Name

    Workbooks(wb).Close savechanges:=False
    Workbooks.Open Filename:=pathToTheFile & wb

End Sub

您甚至可以将其绑定到快捷方式...