VBA中的“撤消”按钮可恢复整个版本的工作表

时间:2016-08-18 22:30:39

标签: excel vba excel-vba macros worksheet-function

我目前有一个支持宏的电子表格,可以执行各种功能,包括更新,创建和删除数百行。如果出于某种原因,其中一个函数变得混乱并删除了意图保留的信息 - 我想实现一个“撤消”按钮来恢复刚刚被宏改变的电子表格版本。

我认为它将如下所示:

    Public InstanceOfWorksheet As Range

Sub Button_Click()
    InstanceOfWorksheet = CurrentWorksheet.UsedRange 'Or something like this
    'Macro functionality here
    CurrentWorksheet.Update() 'Worksheet has now been updated
    End Sub

Sub Button2_Click()
    InstanceOfWorksheet = CurrentWorksheet.UsedRange 'Or something like this
    'Second Macro functionality here
    CurrentWorksheet.Update() 'Worksheet has now been updated
    End Sub

Sub UndoLastMacro_Click()
    CurrentWorksheet = InstanceOfWorksheet
    End Sub

因此,在这种情况下,当您激活UndoLastMacro命令时,您将有效地“恢复”最后一个宏调用之前的工作表版本。

我的问题是,InstanceOfWorksheet应该是什么变量类型,以及将InstanceOfWorksheet的内容复制回当前工作表的最简单方法是什么?

提前致谢! :)

1 个答案:

答案 0 :(得分:0)

我会在代码中做这样的事情

Sub Button_Click()
    Dim TemporaryFileName as String
    TemporaryFileName = "FileName" 'You can include a path here too like "C:\Wherever\FileName"
    ThisWorkbook.SaveAs(TemporaryFileName)
    ... (code to be run
End Sub

Sub Restore_Button_Click()
    Workbooks.Open(TemporaryFileName)
    ThisWorkbook.Close False ' Won't save. Maybe set to true if you don't want to lose it just yet

 End Sub

您可能还需要添加一个按钮以将其保存为最初调用的文件,以便" new"备份工作簿替换了您的宏损坏的工作簿。

希望这有帮助