Страница 1 из 2
Отмена результатов сортировки
Добавлено: 15 июл 2008, 13:01
Mint86
Как можно отменить действие (сортировку) после выполнение макроса? В данном случае я сортирую определенный диапозон на листе и хотелось бы иметь возможность отменять действие. Как можно запомнить положение дел до сортировки?
Вот сам код сортировки...
Sub SortRezult()
'Call SaveUndoInfo(Selection) - что-то вроде этого...
Range("C6:P115").Select
ActiveWindow.SmallScroll Down:=-105
Selection.Sort Key1:=Range("L6"), Order1:=xlAscending, Key2:=Range("J6") _
, Order2:=xlAscending, Key3:=Range("P6"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
ActiveWindow.SmallScroll Down:=-15
End Sub
Re: Отмена результатов сортировки
Добавлено: 15 июл 2008, 13:06
Romeo
Сорри, я не специалист в VBA, может скажу глупость. А что, нет возможности просто вызвать команду офиса Undo?
Re: Отмена результатов сортировки
Добавлено: 15 июл 2008, 13:10
Mint86
После выполнения макроса к сожалению данная кнопка не активна..
Re: Отмена результатов сортировки
Добавлено: 15 июл 2008, 13:26
VictorM
отменить действие макроса - вообще большая проблема.
Как-то уже говорили на этом форуме.
ИМХО единственный выход - закрыть книгу без сохранения.
хотя....можно поробовать перед сортировкой сохранять где-то исходные данные
Re: Отмена результатов сортировки
Добавлено: 15 июл 2008, 13:34
SAS888
А нельзя перед Вашей сортировкой просто сохранить файл под временным именем. Затем, в случае необходимости вернуться к нему.
Re: Отмена результатов сортировки
Добавлено: 15 июл 2008, 14:01
Mint86
VictorM, да наверное так и сделаю, жалко что нет более легкого решения.
Сделал так
Application.OnUndo Text:="Отменить действия макроса", Procedure:="CancelMacro"
Private Sub CancelMacro()
ThisWorkbook.Close saveChanges:=False
End Sub
SAS888, данная возможность уже есть, просто хотелось более "эстетично" что ли..
VictorM,
SAS888 спасиб
Но, если у кого нить есть еще решения, буду очень признателен!
Re: Отмена результатов сортировки
Добавлено: 15 июл 2008, 14:18
SAS888
А кто принимает решение, оставлять результат сортировки или нет?
Если это решение зависит от причины, которую можно проконтролировать с помощью макроса, то целесообразно перед сортировкой сделать, например, копию этого листа (в этой же книге), а по результату контроля - оставлять новый лист, или вернуть копию.
Re: Отмена результатов сортировки
Добавлено: 15 июл 2008, 14:26
Mint86
" писал(а):А кто принимает решение, оставлять результат сортировки или нет?
Решение принимает пользователь. В принципе получается так что иногда сортировка нужна только на время. Конечно выход без сохранения книги решает вопрос. но при этом мне пришлось отказаться от автоматического сохраниния книги при выходе (причин для автосохранения было много не буду перечислять). Да и пользоваться этой таблицей буду не я, и конечному пользователю будет слегка неудобно все время после сортировки заново запускать файл.
Re: Отмена результатов сортировки
Добавлено: 15 июл 2008, 14:31
VictorM
значит все-так имеет смысл подумать о дополнительном листе, как говорил SAS888
это может решить проблему. Все же проще удалить ненужный лист,чем закрывать/открывать книгу
Re: Отмена результатов сортировки
Добавлено: 15 июл 2008, 14:31
SAS888
Ну, Вам виднее. Хотя как раз задачу "сортировки на время" это временное копирование и решит.