方法来自:http://www.exceltip.net/thread-9582-1-1.html,如转载请注明出处。
在VBA宏执行后,一般是不能撤销操作的(快速访问工具栏或者编辑栏里的撤销按钮)。那么当有时候误操作的时候就不得不关闭文档再次开启。其实VBA中提供了我们撤销宏操作的方法,但是这个方法就是我们得编写一个撤销宏操作的另一个宏。虽然比较繁琐,但是这个方法可以让我们将操作之前的数据作为参数传递,从而完整恢复宏操作之前的状态。
在宏的最后我们加上如下语句即可指定进行撤销操作时执行的宏。注意有两个参数
Application.OnUndo 撤销按钮显示的内容,指定宏的名称
请参考例子:
Sub Test1()
Dim Temp
Temp = Range("A1") '记录A1之前的数据
Range("A1") = 100 '操作A1
'创建可撤销的操作。并指定带参数的Test2为撤销时的宏
Application.OnUndo "撤销Test1宏操作", "'Test2 """ & Temp & """'"
End Sub
Sub Test2(ByVal Rng)
Range("A1") = Rng 'Test2可以用于恢复A1原来的值
End Sub