【问题标题】:MS Excel how to undo multiple actions using VBAMS Excel 如何使用 VBA 撤消多个操作
【发布时间】:2018-01-30 01:57:31
【问题描述】:

我想知道我是否可以撤消撤消队列中的所有操作,

我知道 Application.Undo 函数,但这只会撤消最后一个操作并清除队列,我尝试将其放入循环中,它只是一直撤消然后重做。

额外信息:
用户以只读方式打开表单,
意外更改字段然后使用进行更改然后保存它的表单(在 vba 中)并且意外更改也被保存,
我想在用户运行表单之前撤消所有意外更改,以便只保存必要的更改。

我可以一次撤消多个操作吗?

【问题讨论】:

  • 您是尝试使用 VBA 撤消所有操作,还是不使用?此外,如果没有一些相当聪明/复杂的编码,AFAIK,如果你删除一个单元格,你就不能像使用“CTRL+Z”那样“撤消”宏。
  • 我只想撤消用户输入的任何内容,因此只有手动操作(无宏)
  • 什么版本的 Excel?在 2016 年(我相信更早),您可以转到“撤消”,单击向下箭头,然后查看之前完成的操作并将其撤消。您是否只能看到最近的操作?
  • 我不是用户,用户不知道他们输入了任何内容,我宁愿让系统健壮也不愿告诉用户不要再犯错误
  • documentation 表示“此方法仅撤消用户在运行宏之前执行的最后一个操作,并且它必须是宏中的第一行。它不能用于撤消 Visual Basic 命令。”尽管它不必是宏中的第一行(AFAIK 它只需要在 VBA 本身进行任何更改之前发生),但关于仅撤消 last 操作的一点是正确的。如果您不希望用户通过表单以外的方式更改工作表,为什么不保护工作表?

标签: vba excel undo


【解决方案1】:

您可以关闭工作簿而不保存。这是我知道的唯一方法。为避免数据丢失,请在数据副本上运行宏。

基本上,在 VBA 运行后您无法撤消任何操作...

【讨论】:

    猜你喜欢
    • 2015-12-14
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2018-08-23
    • 2013-02-05
    • 2012-10-03
    相关资源
    最近更新 更多