【发布时间】:2021-02-20 06:34:16
【问题描述】:
有没有办法在 VBA 中的 Worksheet Change 事件 中知道用户已经完成了 撤消或重做和更具体地说是重做。请记住
我使用了一种比较 Undo 和 Redo 堆栈高度的相反演变的方法,除了 1 个不可约情况外,该方法效果很好:
当重做堆栈高度从 1 变为 0 时,可能有两个原因:
- 用户执行了最后一次重做
- 或者用户在已清空重做堆栈的工作表中执行了简单更改。
我没有找到任何东西来区分这两种情况。
.OnAction 不适用于内置命令栏控件,并且没有其他属性提供有用的信息。
使用的 2 个 CommandBar 控件是:
- 撤消 ->
Application.CommandBars("Standard").FindControl(ID:=128) - 重做 ->
Application.CommandBars("Standard").FindControl(ID:=129)
堆栈高度计数带有属性.ListCount(如果为0,则使用On Error保护)
提前感谢任何线索。
【问题讨论】:
-
在 Access 中,我曾经使用
OnDirty来跟踪用户输入。在进入时,OnDirty变为true,在undo上,OnDirty变为 false。我不知道Excel中是否存在。 -
感谢您的建议。不幸的是,它在 Excel 中不起作用,属性未知。