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

Вход

Регистрация

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

 

= Мир MS Excel/Отмена действия при перемещении ячеек - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отмена действия при перемещении ячеек (Макросы/Sub)
Отмена действия при перемещении ячеек
Tavlar Дата: Среда, 30.09.2020, 14:15 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Здравствуйте
[vba]
Код
Option Explicit
Public sValue As String, z As Long
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim y, xx As Long, a, b As String
y = Target.Column
If y > 64 Then Exit Sub
a = Cells(2, z).Value
b = Cells(2, y).Value
If y <> z Then
xx = MsgBox("Переместить " & a & " в " & b, vbYesNo)
    If xx = 6 Then: Exit Sub
    If xx = 7 Then: Application.SendKeys ("^z")
End If
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
z = Target.Column
End Sub
[/vba]
Задача сделать так, чтобы при перемещении ячейки в другую колонну, выводилось сообщение с запросом, если нажать да, то макрос закрывается, если нажать нет, нужно сделать отмену действия, т.е. вернуть ячейку на прежнее место. Примерно что то похожее написал. Но когда срабатывает команда Application.SendKeys ("^z"), макрос заново срабатывает на изменение. Пытался с помощью команды Application.EnableEvents = False включить и выключить , но не получается. Помогите, пожалуйста, решить задачу
 
Ответить
СообщениеЗдравствуйте
[vba]
Код
Option Explicit
Public sValue As String, z As Long
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim y, xx As Long, a, b As String
y = Target.Column
If y > 64 Then Exit Sub
a = Cells(2, z).Value
b = Cells(2, y).Value
If y <> z Then
xx = MsgBox("Переместить " & a & " в " & b, vbYesNo)
    If xx = 6 Then: Exit Sub
    If xx = 7 Then: Application.SendKeys ("^z")
End If
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
z = Target.Column
End Sub
[/vba]
Задача сделать так, чтобы при перемещении ячейки в другую колонну, выводилось сообщение с запросом, если нажать да, то макрос закрывается, если нажать нет, нужно сделать отмену действия, т.е. вернуть ячейку на прежнее место. Примерно что то похожее написал. Но когда срабатывает команда Application.SendKeys ("^z"), макрос заново срабатывает на изменение. Пытался с помощью команды Application.EnableEvents = False включить и выключить , но не получается. Помогите, пожалуйста, решить задачу

Автор - Tavlar
Дата добавления - 30.09.2020 в 14:15
Pelena Дата: Среда, 30.09.2020, 21:45 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16638
Репутация: 3597 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Здравствуйте.
Для "нет" перепишите строчку:
[vba]
Код
If xx = 7 Then Application.EnableEvents = False: Application.Undo: Application.EnableEvents = True
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Для "нет" перепишите строчку:
[vba]
Код
If xx = 7 Then Application.EnableEvents = False: Application.Undo: Application.EnableEvents = True
[/vba]

Автор - Pelena
Дата добавления - 30.09.2020 в 21:45
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отмена действия при перемещении ячеек (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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