问题描述
在工作表更改事件中的 VBA 中,有一种方法可以知道用户已执行 Undo或Redo ,并且更具体地说是重做。请记住,也可以使用
我使用了一种比较撤消和重做堆栈高度的相反演变的方法,该方法在1种不可归约的情况下可以很好地工作:
当重做堆栈高度从1变为0时,可能有两个原因:
我没有发现任何可区分这两种情况的 。
.OnAction
不适用于内置CommandBar控件,并且没有其他属性提供有用的信息。
使用的2个CommandBar控件是:
- 撤消->
Application.CommandBars("Standard").FindControl(ID:=128)
- 重做->
Application.CommandBars("Standard").FindControl(ID:=129)
堆栈高度计数带有属性.ListCount
(如果为0,则用On Error
保护)
预先感谢您提供任何线索。
解决方法
我也尝试过Application.OnUndo
,但完全无法使用。它需要一个文本,杀死堆栈,过程中的Application.Undo
会产生错误。而且无论如何Application.OnRepeat
似乎不是Application.OnUndo
的对应物。它只对Application.CommandBars("Standard").FindControl(ID:=129).Execute
)