【发布时间】:2018-01-30 01:57:31
【问题描述】:
我想知道我是否可以撤消撤消队列中的所有操作,
我知道 Application.Undo 函数,但这只会撤消最后一个操作并清除队列,我尝试将其放入循环中,它只是一直撤消然后重做。
额外信息:
用户以只读方式打开表单,
意外更改字段然后使用进行更改然后保存它的表单(在 vba 中)并且意外更改也被保存,
我想在用户运行表单之前撤消所有意外更改,以便只保存必要的更改。
我可以一次撤消多个操作吗?
【问题讨论】:
-
您是尝试使用 VBA 撤消所有操作,还是不使用?此外,如果没有一些相当聪明/复杂的编码,AFAIK,如果你删除一个单元格,你就不能像使用“CTRL+Z”那样“撤消”宏。
-
我只想撤消用户输入的任何内容,因此只有手动操作(无宏)
-
什么版本的 Excel?在 2016 年(我相信更早),您可以转到“撤消”,单击向下箭头,然后查看之前完成的操作并将其撤消。您是否只能看到最近的操作?
-
我不是用户,用户不知道他们输入了任何内容,我宁愿让系统健壮也不愿告诉用户不要再犯错误
-
documentation 表示“此方法仅撤消用户在运行宏之前执行的最后一个操作,并且它必须是宏中的第一行。它不能用于撤消 Visual Basic 命令。”尽管它不必是宏中的第一行(AFAIK 它只需要在 VBA 本身进行任何更改之前发生),但关于仅撤消 last 操作的一点是正确的。如果您不希望用户通过表单以外的方式更改工作表,为什么不保护工作表?