|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.07.2009, 15:29 | #1 |
Пользователь
Регистрация: 06.07.2009
Сообщений: 45
|
Откат макроса назад
Господа, очень нужен совет в таком вопросе. Я создал макрос удаления строк с последующими определёнными преобразованиями (копированиями из одних ячеек в другие), но очень нужно еще иметь возожность делать откат назад (типа Undo или Ctrl-Z). Буду очень благодарен за подсказку, как сделать Undo только что выполненного макроса.
|
30.07.2009, 15:58 | #2 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Это достаточно долгая история, постараюсь прояснить часть в кратце.
Откат можно сделать несколькими способами: 1. Самый неудобный, но и самый надежный. Вы не сохраняете изменения в файле, после выполнения макроса и закрываете файл без сохранения. 2. Наиболее геморный для пользователя. В меню Сервис - Доступ к книге, выделить закладку Правка. Установить галочку напротив "Разрешить совместный доступ" -ОК. Затем на все вопросы - ОК. Для просмотра и отмены изменений в книге - Сервис - Исправления - Принять/отклонить исправления. Примечание : Общая книга имеет ряд ограничений, которые обязательно необходимо учитывать при работе с ней. 3. Через Aplication.OnUndo Данный метод более прост для использования конечным пользователем, но сложноват в исполнении и надо учитывать, что все данные об изменениях, совершенных до макроса, будут стерты. В общих чертах: Создаете глобальные переменные, в которые будете заносить информацию о данных, содержащихся в изменяемом макросом диапазоне. Создаете отдельную процедуру, в которой заполняете эти пременыне данными. Перед выполнением основного макроса вызываете эту процедуру, а в конце основного макроса вставляете строку Application.OnUndo "Отмена", "Здесь_имя_макроса_запоминания_знач ений" Вроде так. Может кто дополнит.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
24.02.2012, 11:18 | #3 | |
Пользователь
Регистрация: 13.02.2012
Сообщений: 15
|
Цитата:
Слова "Создаете глобальные переменные..." ввергли меня в тупик. |
|
24.02.2012, 11:37 | #4 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
перед выполнением макроса сделать
ActiveWorkbook.SaveCopyAs 'undofile.xls' и потом откатываться на него.
Правильно поставленная задача - три четверти решения.
|
24.02.2012, 11:58 | #5 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
fil_v, чем так "глобальность" испугала? В такое время живём
Глобальные/публичные - это переменные, которые живут и тогда, когда макрос уже отработал. Т.е. создали такие переменные, затем одним макросом задали им значения, другим позже эти значения прочитали/изменили.
webmoney: E265281470651 Z422237915069 R418926282008
|
24.02.2012, 16:31 | #6 | |
Пользователь
Регистрация: 13.02.2012
Сообщений: 15
|
Цитата:
Простите пожалуйста "чайника". Я можно сказать в таком виде в Excel ни разу не работал. Не было нужды. А тут стал работать с большими объемами информации, полез за ответами в интернет. На этом форуме и узнал что есть такие штуки. Однако тут в основном пишут для тех кто уже имеет в этом опыт. The_Prist выше по странице написал про способ №2. В таком варианте для меня понятно. А вот "ActiveWorkbook.SaveCopyAs 'undofile.xls'" , что с этим делать. |
|
24.02.2012, 16:32 | #7 |
Пользователь
Регистрация: 13.02.2012
Сообщений: 15
|
|
24.02.2012, 18:21 | #8 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Т.е. что такое переменные - неизвестно?
А что такое макрос?
webmoney: E265281470651 Z422237915069 R418926282008
|
24.02.2012, 19:04 | #9 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
Правильно поставленная задача - три четверти решения.
|
|
26.02.2012, 19:48 | #10 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Кстати вариантом первого способа можно считать такой: перед выполнением макроса скопировать весь лист (или несколько) в скрытый "технический" лист(ы). После выполнения макроса, всегда можно откатиться на копии из "технических" листов. Причем таких копий может быть несколько (несколько уровней отката) и по ним же можно отслеживать историю изменений как автоматических, так и действия пользователя.
С уважением, Алексей.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Возвращение назад в меню | K[Lanc]N | Помощь студентам | 5 | 22.02.2009 11:14 |
Запуск макроса с параметрами из другого макроса | Saladin | Microsoft Office Excel | 2 | 19.01.2009 09:43 |
Откат написанной программы | фЁдОр | Свободное общение | 13 | 20.12.2007 11:35 |
Назад в прошлое | Repz | О форуме и сайтах клуба | 4 | 14.08.2007 12:56 |
на шаг назад... | malevich | Общие вопросы Delphi | 9 | 01.04.2007 20:50 |