Чтобы отменить подпрограмму, вы можете либо не сохранять файл и просто закрыть его, либо вы должны написать специальную подпрограмму, чтобы сохранить состояние файла, а затем восстановить состояние (пользовательская отмена) , Это одна из проблем подпрограмм в том, что их нельзя отменить с помощью обычной отмены. Большинство людей, в том числе и я, рекомендуют вам поработать с резервной копией.
Когда вы делаете обычную процедуру отмены, большой вопрос в том, для чего вам нужно спасать государство? Сохранение всей информации о файле будет слишком сложным, поэтому полезно знать, что вы хотите сохранить.
Обновление :
Это грязный способ сделать резервную копию листа, если у вас есть только 1 лист данных. Это скорее подтверждение концепции одного способа создания резервной копии, а не окончательно завершенного идеального кода. Он просто создает резервную копию текущей таблицы, и когда вы восстанавливаете ее, вы просто удаляете исходный лист и переименовываете резервную копию в то, что раньше называлось. : Р
Как проверить:
Поместите некоторые данные и значение в исходный лист, затем запустите подпрограмму 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