Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/в excele с макросом сделать возможность "вернуться" ctrl+z - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » в excele с макросом сделать возможность "вернуться" ctrl+z (Формулы/Formulas)
в excele с макросом сделать возможность "вернуться" ctrl+z
lok888 Дата: Понедельник, 13.03.2017, 02:49 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
добрый день.

есть файл excelс общим доступом и лежит в папке локальной сети/
файл с макросом:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Not Intersect(Target, Range("W:W;AB:AB")) Is Nothing And Target.Cells.Count = 1 Then
        Application.EnableEvents = False
        newval = Target
        Application.Undo
        oldval = Target
        If IsError(Application.WorksheetFunction.Match(newval, Range(Replace(Target.Validation.Formula1, "=", "")), 0)) Then
            Target = newval
        Else
            If Len(oldval) <> 0 And oldval <> newval Then
                Target = Target & ";" & Chr(10) & " " & newval
            Else
                Target = newval
            End If
        End If
        If Len(newval) = 0 Then Target.ClearContents
        Application.EnableEvents = True
    End If
End Sub
[/vba]

после внесения изменений в какую-либо ячейку, вернуться через ctr+z уже не получается: файл сохраняется видимо уже сразу после внесения данных в ячейку.

как можно сделать чтоб оставалась возможность в случае неверного внесения данных в таблице можно было вернуться на несколько шагов назад?


Сообщение отредактировал lok888 - Понедельник, 13.03.2017, 03:02
 
Ответить
Сообщениедобрый день.

есть файл excelс общим доступом и лежит в папке локальной сети/
файл с макросом:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Not Intersect(Target, Range("W:W;AB:AB")) Is Nothing And Target.Cells.Count = 1 Then
        Application.EnableEvents = False
        newval = Target
        Application.Undo
        oldval = Target
        If IsError(Application.WorksheetFunction.Match(newval, Range(Replace(Target.Validation.Formula1, "=", "")), 0)) Then
            Target = newval
        Else
            If Len(oldval) <> 0 And oldval <> newval Then
                Target = Target & ";" & Chr(10) & " " & newval
            Else
                Target = newval
            End If
        End If
        If Len(newval) = 0 Then Target.ClearContents
        Application.EnableEvents = True
    End If
End Sub
[/vba]

после внесения изменений в какую-либо ячейку, вернуться через ctr+z уже не получается: файл сохраняется видимо уже сразу после внесения данных в ячейку.

как можно сделать чтоб оставалась возможность в случае неверного внесения данных в таблице можно было вернуться на несколько шагов назад?

Автор - lok888
Дата добавления - 13.03.2017 в 02:49
buchlotnik Дата: Понедельник, 13.03.2017, 07:04 | Сообщение № 2
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Цитата
файл сохраняется
я вам уже писал, что он не сохраняется - из него можно выйти без сохранения изменений
Цитата
вернуться на несколько шагов
нельзя. Список выполненных действий обнуляется после выполнения макроса (любого макроса, а не этого конкретного).
 
Ответить
Сообщение
Цитата
файл сохраняется
я вам уже писал, что он не сохраняется - из него можно выйти без сохранения изменений
Цитата
вернуться на несколько шагов
нельзя. Список выполненных действий обнуляется после выполнения макроса (любого макроса, а не этого конкретного).

Автор - buchlotnik
Дата добавления - 13.03.2017 в 07:04
bmv98rus Дата: Понедельник, 13.03.2017, 07:29 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4111
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
lok888,

Список выполненных действий обнуляется после
на 99.8$% верно. Я замечал, что бывают остатки, но количество шагов минимально и после каких опреаций осталось что, не разбирался.
А вот это
нельзя

не совсем верно. Если поискать, то делается собственный STAСK и собственный UNDO.
[vba]
Код
Public Sub AAA()
Application.OnUndo "Undo This", "UndoProc"
' your code here
End Sub

Sub UndoProc()
' code to undo
End Sub
[/vba]Однако объем и сложность скрипта многократно превысит то что у вас сейчас и в этом слкчае Михаил прав.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеlok888,

Список выполненных действий обнуляется после
на 99.8$% верно. Я замечал, что бывают остатки, но количество шагов минимально и после каких опреаций осталось что, не разбирался.
А вот это
нельзя

не совсем верно. Если поискать, то делается собственный STAСK и собственный UNDO.
[vba]
Код
Public Sub AAA()
Application.OnUndo "Undo This", "UndoProc"
' your code here
End Sub

Sub UndoProc()
' code to undo
End Sub
[/vba]Однако объем и сложность скрипта многократно превысит то что у вас сейчас и в этом слкчае Михаил прав.

Автор - bmv98rus
Дата добавления - 13.03.2017 в 07:29
lok888 Дата: Понедельник, 13.03.2017, 09:30 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
я вам уже писал, что он не сохраняется - из него можно выйти без сохранения изменений

ну а если например вносятся изменения в десять ячеек. в десятой случайно или удалил все или еще что-то накосячил и нужно на шаг вернуться.
получается что только закрывать весь файл без сохранения и потом по новой все десять ячеек обрабатывать ???? мои коллеги убьют меня если я им сообщу такую новость )))))

эмм... не знаю что такое STACK и UNDO =)
по читаю)))
если есть хоть маленькая возможность попробую сделать.

еще проблема возникла с тем что бывает копируешь ячейку и пытаешься в ставить в другую, но вставляет пустоту.. с нескольких попыток получается только ((
тож из-за подправленного исходного текста. блин, вот хочешь упростить работу с эксель, но выходит наоборот )))
 
Ответить
Сообщение
я вам уже писал, что он не сохраняется - из него можно выйти без сохранения изменений

ну а если например вносятся изменения в десять ячеек. в десятой случайно или удалил все или еще что-то накосячил и нужно на шаг вернуться.
получается что только закрывать весь файл без сохранения и потом по новой все десять ячеек обрабатывать ???? мои коллеги убьют меня если я им сообщу такую новость )))))

эмм... не знаю что такое STACK и UNDO =)
по читаю)))
если есть хоть маленькая возможность попробую сделать.

еще проблема возникла с тем что бывает копируешь ячейку и пытаешься в ставить в другую, но вставляет пустоту.. с нескольких попыток получается только ((
тож из-за подправленного исходного текста. блин, вот хочешь упростить работу с эксель, но выходит наоборот )))

Автор - lok888
Дата добавления - 13.03.2017 в 09:30
китин Дата: Понедельник, 13.03.2017, 09:36 | Сообщение № 5
Группа: Модераторы
Ранг: Экселист
Сообщений: 7019
Репутация: 1074 ±
Замечаний: 0% ±

Excel 2007;2010;2016


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеа почитайте тут

Автор - китин
Дата добавления - 13.03.2017 в 09:36
lok888 Дата: Понедельник, 13.03.2017, 10:55 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
а почитайте тут

спасибо!
 
Ответить
Сообщение
а почитайте тут

спасибо!

Автор - lok888
Дата добавления - 13.03.2017 в 10:55
buchlotnik Дата: Понедельник, 13.03.2017, 11:09 | Сообщение № 7
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Цитата
почитайте тут
дык в том-то и дело, что там описывается общеизвестная отмена ПОСЛЕДНЕГО запуска макроса. Посему если
Цитата
не совсем верно
можно увидеть примерчик отката нескольких действий на листе, в том числе макров
Цитата
на несколько шагов назад
Цитата
через ctr+z
?


Сообщение отредактировал buchlotnik - Понедельник, 13.03.2017, 11:10
 
Ответить
Сообщение
Цитата
почитайте тут
дык в том-то и дело, что там описывается общеизвестная отмена ПОСЛЕДНЕГО запуска макроса. Посему если
Цитата
не совсем верно
можно увидеть примерчик отката нескольких действий на листе, в том числе макров
Цитата
на несколько шагов назад
Цитата
через ctr+z
?

Автор - buchlotnik
Дата добавления - 13.03.2017 в 11:09
bmv98rus Дата: Понедельник, 13.03.2017, 12:37 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4111
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Михаил,
Если вопрос по "не совсем верно" ко мне ,то я имел в виду что категорически нельзя наверно не уместно, так как есть вариант уйти в собственный обработчик, но в самом конце я и написал " в этом случае Михаил прав." именно иходя из сложности, целесообразности ....


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеМихаил,
Если вопрос по "не совсем верно" ко мне ,то я имел в виду что категорически нельзя наверно не уместно, так как есть вариант уйти в собственный обработчик, но в самом конце я и написал " в этом случае Михаил прав." именно иходя из сложности, целесообразности ....

Автор - bmv98rus
Дата добавления - 13.03.2017 в 12:37
buchlotnik Дата: Понедельник, 13.03.2017, 12:43 | Сообщение № 9
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
[offtop]
Цитата
категорически нельзя наверно не уместно
согласен, но тогда это касается любого софта - всегда можно написать свой :) - потому как одно дело макрос откатить, а другое дело мониторить, что на листе творится на несколько шагов назад
 
Ответить
Сообщение[offtop]
Цитата
категорически нельзя наверно не уместно
согласен, но тогда это касается любого софта - всегда можно написать свой :) - потому как одно дело макрос откатить, а другое дело мониторить, что на листе творится на несколько шагов назад

Автор - buchlotnik
Дата добавления - 13.03.2017 в 12:43
lok888 Дата: Вторник, 14.03.2017, 03:44 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
из статьи понял что можно прописать действия, которые возможно откатить.
Type SaveRange
vFormula As Variant
sAddr As String
lColor As Long

вот есть ли список где-нибудь таких пользовательских типов, чтоб прописать их в коде как в той статье на всевозможные случаи жизни ? =)))
ну какие основные ошибки могут быть при заполнении отчета в котором у нас макрос:
цифру не ту прописал, дату, слово с ошибкой, не туда скопировал текст или ячейку в целом, заливка, строку вставил не туда или столбец. - ну вот основные, если в код прописать эти несколько пользовательских типов, то можно ж будет создать некую ... ну е совсем полноценную модель но с возможностью отката изменений ? )))
 
Ответить
Сообщениеиз статьи понял что можно прописать действия, которые возможно откатить.
Type SaveRange
vFormula As Variant
sAddr As String
lColor As Long

вот есть ли список где-нибудь таких пользовательских типов, чтоб прописать их в коде как в той статье на всевозможные случаи жизни ? =)))
ну какие основные ошибки могут быть при заполнении отчета в котором у нас макрос:
цифру не ту прописал, дату, слово с ошибкой, не туда скопировал текст или ячейку в целом, заливка, строку вставил не туда или столбец. - ну вот основные, если в код прописать эти несколько пользовательских типов, то можно ж будет создать некую ... ну е совсем полноценную модель но с возможностью отката изменений ? )))

Автор - lok888
Дата добавления - 14.03.2017 в 03:44
Мир MS Excel » Вопросы и решения » Вопросы по VBA » в excele с макросом сделать возможность "вернуться" ctrl+z (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!