Всем доброго времени суток! Пользовался поиском, не нашел похожей темы( Помогите, пожалуйста! Есть файл (прикрепил) Необходимо, чтобы при изменении текста в любой (не пустой, то есть если там уже есть какой-либо текст) ячейке А4-А5000 выходило окно с запросом "Изменить название товара?" и кнопочки да / нет Ну, соответственно, при нажатии на ДА ячейка меняла свое содержимое, и при нажатии НЕТ название оставалось прежним
Заранее спасибо!
Всем доброго времени суток! Пользовался поиском, не нашел похожей темы( Помогите, пожалуйста! Есть файл (прикрепил) Необходимо, чтобы при изменении текста в любой (не пустой, то есть если там уже есть какой-либо текст) ячейке А4-А5000 выходило окно с запросом "Изменить название товара?" и кнопочки да / нет Ну, соответственно, при нажатии на ДА ячейка меняла свое содержимое, и при нажатии НЕТ название оставалось прежним
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A4:A5000")) Is Nothing Then Application.ScreenUpdating = 0 Application.EnableEvents = 0 Application.Undo z0_(1, 1) = Target Application.Undo If z0_ <> "" Then If MsgBox("Изменить название товара?" & vbLf & "Было '" & z0_(1, 1) & "'.", vbYesNo) <> 6 Then Application.Undo End If End If Application.EnableEvents = 1 End If End Sub
[/vba] Добавлено Для множественных изменений нужно дописать цикл проверки на пусто
Так нужно? Макрос в модуль листа [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A4:A5000")) Is Nothing Then Application.ScreenUpdating = 0 Application.EnableEvents = 0 Application.Undo z0_(1, 1) = Target Application.Undo If z0_ <> "" Then If MsgBox("Изменить название товара?" & vbLf & "Было '" & z0_(1, 1) & "'.", vbYesNo) <> 6 Then Application.Undo End If End If Application.EnableEvents = 1 End If End Sub
[/vba] Добавлено Для множественных изменений нужно дописать цикл проверки на пусто_Boroda_
Пробуем. К сообщению приложен файл: tovarchik.xlsm(13Kb)
Спасибо! Только вопрос выходит даже тогда, когда вводишь название в пустую ячейку, хотелось бы чтобы окно выходило только при изменении заполненной ячейки
Пробуем. К сообщению приложен файл: tovarchik.xlsm(13Kb)
Спасибо! Только вопрос выходит даже тогда, когда вводишь название в пустую ячейку, хотелось бы чтобы окно выходило только при изменении заполненной ячейкиKir_ivanov
Да, согласен, недоработочка. Вернее, первоначальный вариант был правильный, а потом хотел как лучше, а получилось как всегда Посмотрите так - убрал (1, 1)
Да, согласен, недоработочка. Вернее, первоначальный вариант был правильный, а потом хотел как лучше, а получилось как всегда Посмотрите так - убрал (1, 1)_Boroda_
Да, согласен, недоработочка. Вернее, первоначальный вариант был правильный, а потом хотел как лучше, а получилось как всегда Посмотрите так - убрал (1, 1)
Спасибо за ответ! Все работает, единственное, это то что фокус возвращается всегда обратно на ту же ячейку, по которой выводился вопрос(
Да, согласен, недоработочка. Вернее, первоначальный вариант был правильный, а потом хотел как лучше, а получилось как всегда Посмотрите так - убрал (1, 1)
Спасибо за ответ! Все работает, единственное, это то что фокус возвращается всегда обратно на ту же ячейку, по которой выводился вопрос(Kir_ivanov
Kir_ivanov, так у Вас фокус вернётся к последней выделенной ячейке [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A4:A5000")) Is Nothing Then Set r = Selection Application.ScreenUpdating = 0 Application.EnableEvents = 0 Application.Undo z0_ = Target Application.Undo If z0_ <> "" Then If MsgBox("Изменить название товара?" & vbLf & "Было '" & z0_ & "'.", vbYesNo) <> 6 Then Application.Undo End If End If r.Select Application.EnableEvents = 1 End If End Sub
[/vba]
Kir_ivanov, так у Вас фокус вернётся к последней выделенной ячейке [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A4:A5000")) Is Nothing Then Set r = Selection Application.ScreenUpdating = 0 Application.EnableEvents = 0 Application.Undo z0_ = Target Application.Undo If z0_ <> "" Then If MsgBox("Изменить название товара?" & vbLf & "Было '" & z0_ & "'.", vbYesNo) <> 6 Then Application.Undo End If End If r.Select Application.EnableEvents = 1 End If End Sub