Я предлагаю вам объяснить немного больше вашего вопроса, но пока что я могу заключить, что у вас есть следующий вопрос:
- есть лист Excel с формулами и данными заблокирован.
- предлагаем редактировать страницу, но не сохранять изменения, как "консультацию" к данным.
В первую очередь могу предложить следующее:
- Создать резервный лист , где вы сохраняете базовую страницу
- Разблокируйте лист для редактирования.
- если вы выйдете из редактирования, восстановите данные из резервной копии на основной лист.
- если вы сбросили редактирование, выполните ту же процедуру, что и exit, и снова разблокируйте данные.(для того, как был составлен график потока кода, скопированные данные заблокированы)
Это приведет к следующему коду:
Sub BackUpData() 'this will be linked to you "what if" button
Sheets("Data_Sheet").Select 'select shhet with data, just in case
Range("A1:M56").Select ' range of your important data in your excel sheet
Cells.Select
Selection.Copy
Sheets("BackUp_Sheet").Select
Range("A1").Select 'lets paste the data in the same positión
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Data_Sheet").Select
End Sub
Это сделает копиюданные и формулы, копирование диаграмм без нарушения источника данных - это еще одна проблема, может быть, вы можете решить эту проблему.Есть какие-нибудь диаграммы?
Sub RestoreData() 'this will be linked to you "Reset" and "Exit" button
Sheets("BackUp_Sheet").Select 'select shhet with data, just in case
Range("A1:M56").Select ' range of your important data in your excel sheet
Cells.Select
Selection.Copy
Sheets("Data_Sheet").Select
Range("A1").Select 'lets paste the data in the same positión
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Обычные возможности для улучшения:
- Динамически выберите диапазон, но не выбирайте весь лист, потому что могут возникнуть проблемы с памятью.(У меня заканчиваются ресурсы при попытке скопировать все ячейки Excel 2007 на моем ноутбуке: P).
- Удалите мерцание с помощью Application.ScreenUpdating .
- У меня есть`t проверить, работает ли это, когда * backup_Sheet * является скрытым .
Другой isssuse - unlock данные в листе.
Sub UnlockMySheet()
'password here won`t protect the business logic or the code from prying eyes, just the user from themselves
ActiveWorkbook.Unprotect
ActiveSheet.Unprotect
Range("D9,B13").Select ' select the editable cells
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
ActiveWorkbook.Protect Structure:=True, Windows:=True
End Sub
Обычные возможности для улучшения:
- Возможно, я забыл протокол защиты и просто оставляю страницу в точности такой, какой она была.(извините, у меня нет времени, чтобы проверить этот код).
- Изгнание из коллективного разума stackoverflow.
, то есть пока