Excel 2010 Macros Fun с помощью кнопок - PullRequest
0 голосов
/ 05 августа 2011

Хорошо, поэтому я создаю электронную таблицу, которая может быть отредактирована другим пользователем, но заблокирована в противном случае.Я надеюсь создать 3 кнопки.«Что если», «Выход, что если» и «Сброс»

«Что, если» позволит пользователю вводить данные.«Exit what if» позволит пользователю выйти из режима ввода и вернуться к настройкам по умолчанию.документ.Тогда «Сброс» позволит пользователю оставаться в «Что если», но сбросить все значения по умолчанию.

Тогда я хочу, чтобы кнопка «Что если» появлялась где-то слева, но при нажатии на нее, его заменили на «Выход» и «Сброс»

1 Ответ

1 голос
/ 06 августа 2011

Я предлагаю вам объяснить немного больше вашего вопроса, но пока что я могу заключить, что у вас есть следующий вопрос:

  • есть лист 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.

, то есть пока

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...