nik*_*iko 4 excel vba excel-2007
谁能告诉我如何撤消对工作簿的所有更改?我有文件 excel1.xlsx,我使用 vba 对 excel.xlsx 进行了排序和许多操作。但最后我希望 excel1.xlsx 与开始时相同。如何使用 vba 撤消所有更改?
activeworkbook.saved = True
Run Code Online (Sandbox Code Playgroud)
我发现它保留了开始时的所有内容,但它不起作用。所以有什么命令可以在对它执行操作后取回我的原始文件。嗯,是
wb1.Sheets(1).Activate
ActiveWorkbook.Close savechanges:=False
Run Code Online (Sandbox Code Playgroud)
它有效,但我不希望我的工作簿被关闭它应该仍然打开。我该怎么做?提前致谢。
为了撤销一个子程序,你可以选择不保存文件直接关闭它,或者你必须编写一个特殊的子程序来保存文件的状态,然后恢复状态(自定义撤销)。这是子例程的痛苦之一是它们无法通过正常撤消撤消。大多数人,包括我在内,会建议你使用备份。
在制定您的客户撤消例程时,最大的问题是您需要为什么保存状态?保存有关文件的所有信息会非常繁重,因此最好知道要保存的内容。
更新:如果您只有一张数据,这是一种备份工作表的肮脏方式。这更像是一种创建备份的方法的概念证明,而不是最终确定的完美代码。它只是创建当前工作表的备份副本,当您恢复时,您只需删除原始工作表并将备份重命名为以前的名称。:p
如何测试: 在原始工作表中放入一些数据和值,然后运行 Test() 子例程!
Public backupSheet As Worksheet
Public originalSheet As Worksheet
Public originalSheetName As String
Sub CreateBackup()
Set originalSheet = Application.ActiveSheet
originalSheetName = originalSheet.Name
originalSheet.Copy After:=Sheets(Application.Worksheets.Count)
Set backupSheet = Application.ActiveSheet
backupSheet.Name = "backup"
originalSheet.Activate
End Sub
Sub RestoreBackup()
Application.DisplayAlerts = False
originalSheet.Delete
backupSheet.Name = originalSheetName
Application.DisplayAlerts = True
End Sub
Sub ZerosFromHell()
Range("A1:Z100").Select
Cells.Value = 0
End Sub
Sub Test()
Call CreateBackup
Call ZerosFromHell
MsgBox "look at all those darn 0s!"
Call RestoreBackup
End Sub
Run Code Online (Sandbox Code Playgroud)