Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Office Excel
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
gpetrv
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 19
1

Предупреждение редактирования и удаления

12.02.2020, 14:25. Просмотров 1330. Ответов 40

Хочу сделать предупреждение с подтверждением удаления или изменения данных в диапазоне ячеек. Своего рода защита от случайного нажатия кнопок. Каким образом?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2020, 14:25
Ответы с готовыми решениями:

код кнопки удаления,редактирования из бд
Доброго времени суток! Нужен код для удаления,редактирования строки из базы данных, может у кого то...

Форма для добавления, редактирования, удаления данных
Уважаемые форумчане, подскажите, как лучше сделать и правильнее! В форме "Органы исполнительной...

Пример добавления, удаления и редактирования данных в БД *.mbd
нужен пример добавления, удаления и редактирования данных в БД *.mbd через классы...

DataBinding + DataGridView подтверждение удаления (редактирования, добавления)
Всем привет. Ситуация следующая. Есть DataGridView, в качестве источника данных использую...

Не корректно работают функции добавления абитуриента, редактирования, удаления
Еще меня интересует как написать запрос к базе чтоб редактировать строку, например когда я написал...

40
Narimanych
773 / 553 / 273
Регистрация: 23.03.2015
Сообщений: 1,907
12.02.2020, 14:38 2
gpetrv,

Используй макросы....
0
gpetrv
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 19
12.02.2020, 14:57  [ТС] 3
А поподробнее. Есть столбцы с числами. При изменении числа или очистке ячейки нужно оповещение с подтверждением. Изменение чисел можно реализовать стандартно через "Проверка вводимых значений". А с очисткой ячейки клавишей DEL не знаю как.
0
Dinoxromniy
553 / 300 / 96
Регистрация: 22.12.2015
Сообщений: 875
12.02.2020, 19:24 4
Цитата Сообщение от gpetrv Посмотреть сообщение
Есть столбцы с числами.
У нас ничего нет. В примере ниже дано решение для диапазона 10х10 относительно ячейки А1
Цитата Сообщение от gpetrv Посмотреть сообщение
А с очисткой ячейки клавишей DEL не знаю как.
В VBA редакторе в нужный лист вставьте код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Worksheet_Change(ByVal Target As Range)
Dim answ As Integer
On Error Resume Next
If Not Intersect(Target, Me.Cells(1, 1).Resize(10, 10)) Is Nothing Then
    answ = MsgBox("Вы уверены?", vbOKCancel)
    Debug.Print answ
    If answ = 2 Then
    Application.EnableEvents = False
    Application.Undo
    Application.EnableEvents = True
    End If
End If
 
End Sub
1
12.02.2020, 19:24
gpetrv
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 19
13.02.2020, 14:18  [ТС] 5
Dinoxromniy, То что нужно! Возможно ли сделать подсвеченную клавишу по умолчанию в оповещении не ОК, а Отмена. И указывать диапазон ячеек явно, а не 10*10?

Добавлено через 24 минуты
С клавишей по умолчанию разобрался. А еще сообщение выводить нужно только при удалении и изменении. На добавление в пустую ячейку не реагировать.
0
gpetrv
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 19
13.02.2020, 15:08  [ТС] 6
А еще выводить В сообщении надпись шапки столбца текущей ячейки. Например "Точно изменить/удалить для Пример1"
0
Вложения
Тип файла: zip Книга1.zip (12.5 Кб, 8 просмотров)
pashulka
3448 / 1867 / 783
Регистрация: 01.12.2010
Сообщений: 3,737
13.02.2020, 18:32 7
gpetrv, Попробуйте так. Только, если после открытия книги, активной окажется ячейки из этой таблицы, то это нужно учесть и, например, вызвать событие SelectionChange

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private vData As Variant
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    vData = Target.Value
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Intersect(Target, [A2:D6]) Is Nothing Then Exit Sub
    
    If Not IsEmpty(vData) Then
       If MsgBox("Изменить/Удалить ? " & Target.EntireColumn.Cells(1), _
          vbOKCancel + vbExclamation + vbDefaultButton2, "") = vbOK Then
          Application.EnableEvents = False
          Application.Undo
          Application.EnableEvents = True
       End If
    End If
    vData = Target.Value
End Sub
0
Narimanych
773 / 553 / 273
Регистрация: 23.03.2015
Сообщений: 1,907
13.02.2020, 19:27 8
gpetrv,
Еще один вариант с учетом
Цитата Сообщение от gpetrv Посмотреть сообщение
А еще сообщение выводить нужно только при удалении и изменении. На добавление в пустую ячейку не реагировать.
0
Вложения
Тип файла: 7z TST1.7z (14.4 Кб, 7 просмотров)
gpetrv
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 19
13.02.2020, 19:59  [ТС] 9
Narimanych, не учтена активная ячейка при открытии книги
и нужно выводить В сообщении надпись шапки столбца текущей ячейки, например "Точно изменить/удалить для "Пример1"" (где "Пример 1" -шапка столбца или значение ячейки A1)
0
Narimanych
773 / 553 / 273
Регистрация: 23.03.2015
Сообщений: 1,907
13.02.2020, 20:14 10
gpetrv,
Цитата Сообщение от gpetrv Посмотреть сообщение
не учтена активная ячейка при открытии книги
смотри тег №8
от Паши:

Цитата Сообщение от pashulka Посмотреть сообщение
если после открытия книги, активной окажется ячейки из этой таблицы, то это нужно учесть и, например, вызвать событие SelectionChange
Цитата Сообщение от gpetrv Посмотреть сообщение
выводить В сообщении надпись шапки столбца текущей ячейки,
почитай про MSGBOX вот тут : https://excelpedia.ru/makrosi-v-excel/msgbox и попробуй сам.
Удачи!

Добавлено через 2 минуты
Поверь если
Цитата Сообщение от gpetrv Посмотреть сообщение
Хочу сделать предупреждение с подтверждением удаления или изменения данных в диапазоне яче
Это действительно правда- и ты хочешь..То делайю Помочь- всегда помогут... если что-то делаешь...
0
gpetrv
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 19
13.02.2020, 23:45  [ТС] 11
Началось. Мне изучать месяцами тему VBA или попросить помощи 2 минутной у форума, для чего он и существует. Знал бы не обращался. Описания синтаксиса MSGBOX Не достаточно для решения задачи.

З.Ы. Еще и форум глючит....
0
Narimanych
773 / 553 / 273
Регистрация: 23.03.2015
Сообщений: 1,907
14.02.2020, 08:37 12
gpetrv,

Не по теме:

Иногда хочется просто промолчать, но не получается...
Если бы вы хоть что-то сами сделали и после N-ной ( хотя бы 2-ой ) попытки у вас не получалось - вам бы помогли советом.
Посмотрите на ваш первый тег и на последний.
Плавный переход от "как это сделать " до " какого хрена вы не доделали".

Хотя стоило вам потратить не 2 месяца, а 2 часа. И во всем бы разобрались сами.
Внимательно почитав и вникнув в код от Паши (тег 8) и прочитав где в Msgbox вставляется титул-заглавие решил бы и вторую проблему
...

А вы НЕ ХОТИТЕ вникать ни во что , и еще предъявляете претензии.
Надеюсь донес до вас суть.

0
pashulka
3448 / 1867 / 783
Регистрация: 01.12.2010
Сообщений: 3,737
14.02.2020, 08:46 13
gpetrv, Для таблицы, которая начинается с самой первой строки, т.е. в т.ч. и для диапазона A2:D6 решение наличествует здесь. Там же игнор и на ввод в пустую ячейку, только нужно учесть мой комментарий.

Но ныть, что все обижают новичка, безусловно лучше. Да и не просили Вы, а по факту, требовали, ибо являетесь потребителем, который, почему-то, уверен, что все ему чем-то обязаны.
0
gpetrv
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 19
14.02.2020, 14:42  [ТС] 14
Цитата Сообщение от pashulka Посмотреть сообщение
gpetrv, Для таблицы, которая начинается с самой первой строки, т.е. в т.ч. и для диапазона A26 решение наличествует здесь. Там же игнор и на ввод в пустую ячейку, только нужно учесть мой комментарий.
Для новичка вообще непонятно. Нужно доработать код, а значит не просто разобраться в куске кода, а изучить тему VBA
желательно с азов.

Цитата Сообщение от pashulka Посмотреть сообщение
Но ныть, что все обижают новичка, безусловно лучше.
а зачем обижать. Можешь/хочешь помоги, нет- лучше молчи

Цитата Сообщение от pashulka Посмотреть сообщение
Да и не просили Вы, а по факту, требовали, ибо являетесь потребителем, который, почему-то, уверен, что все ему чем-то обязаны.
Скажите каким образом просить? мне казалось очевидно на форуме спрашивать помогать. или Вам денег заплатить?

Цитата Сообщение от pashulka Посмотреть сообщение
... который, почему-то, уверен, что все ему чем-то обязаны.
Нет никто не обязан. С чего взяли. Указал что кусок кода невыполняет полностью поставленные цели, а значит нужно доработать. И доработать конечно же мне ибо помощи больше не будет как я понял с вышеизложенным в неприятной форме текстом
Еще раз повторяю хочешь помоги - нет помолчи.
0
pashulka
3448 / 1867 / 783
Регистрация: 01.12.2010
Сообщений: 3,737
14.02.2020, 14:55 15
Цитата Сообщение от gpetrv Посмотреть сообщение
Для новичка вообще непонятно
Нет, для тестирования, достаточно просто не выделять ячейку из таблицы перед закрытием книги.

А если набрать в поисковике, вызов макроса, можно получить несколько вариантов, в т.ч. и Application.Run (для приватного события) и даже вариант с заменой Private на Public и вызов через CodeName.Worksheet_SelectionChange

Цитата Сообщение от gpetrv Посмотреть сообщение
Скажите каким образом просить?
Если этот вопрос вообще возник, то, никак. Этого Вы не умеете, от слова вообще.

Цитата Сообщение от gpetrv Посмотреть сообщение
Еще раз повторяю хочешь помоги - нет помолчи.
А с чего Вы взяли, что вправе давать приказания другим участникам форума ?

Добавлено через 56 секунд
Цитата Сообщение от gpetrv Посмотреть сообщение
И доработать конечно же мне ибо помощи больше не будет как я понял
Искусство манипуляции не ваше.
0
gpetrv
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 19
14.02.2020, 15:05  [ТС] 16
Цитата Сообщение от Narimanych Посмотреть сообщение
gpetrv,
Не по теме:
Иногда хочется просто промолчать, но не получается...
иногда лучше молчать

Цитата Сообщение от Narimanych Посмотреть сообщение
Если бы вы хоть что-то сами сделали и после N-ной ( хотя бы 2-ой ) попытки у вас не получалось - вам бы помогли советом.
Делать начинал без макросов , что более менее знакомо для меня....потерял кучу времени но стандартными способами как оказалось задачу не решить. Обратился к спецам на форум ибо в этой теме полный ноль.

Цитата Сообщение от Narimanych Посмотреть сообщение
Посмотрите на ваш первый тег и на последний.
Плавный переход от "как это сделать " до " какого хрена вы не доделали".
Хотя стоило вам потратить не 2 месяца, а 2 часа. И во всем бы разобрались сами.
Где увидели такого вида ругательные слова? Не накручивайте! Указал что у кода есть изъяны. Хочешь помоги нет- молчи

Цитата Сообщение от Narimanych Посмотреть сообщение
Внимательно почитав и вникнув в код от Паши (тег 8) и прочитав где в Msgbox вставляется титул-заглавие решил бы и вторую проблему
Синтаксис Msgbox смотрел. Про какое заглавие речь? Заголовок окна сообщения? Мне нужно добавить в сообщение значение ячейки. Перенес кусок кода который посчитал нужным от Паши но vba выдал ошибку...
...

Цитата Сообщение от Narimanych Посмотреть сообщение
А вы НЕ ХОТИТЕ вникать ни во что , и еще предъявляете претензии.
Надеюсь донес до вас суть.
В каком пункте претензии? Вник на сколько хватило времени. Появилась минута зайти на форум.......лучше бы не заходил Прям предвзятое отношение.
0
pashulka
3448 / 1867 / 783
Регистрация: 01.12.2010
Сообщений: 3,737
14.02.2020, 15:12 17
Модуль книги ThisWorkbook(ЭтаКнига)

Visual Basic
1
2
3
4
Private Sub Workbook_Open()
    If ActiveSheet.CodeName = "Лист1" Then _
    Лист1.Worksheet_SelectionChange ActiveCell
End Sub
Модуль листа

Visual Basic
1
2
3
...
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
...
И разумеется, если в книге всего один лист, то проверка не нужна.
0
gpetrv
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 19
14.02.2020, 15:26  [ТС] 18
Цитата Сообщение от pashulka Посмотреть сообщение
Нет, для тестирования, достаточно просто не выделять ячейку из таблицы перед закрытием книги.
Я это понял. Но мне нужен хочу рабочий вариант. Перед сохранением каждый раз выделять ячейку не из области не вариант.

Цитата Сообщение от pashulka Посмотреть сообщение
А если набрать в поисковике, вызов макроса, можно получить несколько вариантов, в т.ч. и Application.Run (для приватного события) и даже вариант с заменой Private на Public и вызов через CodeName.Worksheet_SelectionChange
Не понял намек в какую сторону рыть. Порою всеравно

Цитата Сообщение от pashulka Посмотреть сообщение
Если этот вопрос вообще возник, то, никак. Этого Вы не умеете, от слова вообще.
А почему возник? Не сами ли подняли эту тему? Человек очевидно обратился не из нефиг делать а получить помощь/подсказку. Но не упреки.
А некоторые просто так помочь уже не способны. Ищут выгоду. Или хотя бы самоутвердится, превознестись

Цитата Сообщение от pashulka Посмотреть сообщение
А с чего Вы взяли, что вправе давать приказания другим участникам форума ?
Это не приказ. Очевидно. Форум и тема создана для помощи а не брехни.

Цитата Сообщение от pashulka Посмотреть сообщение
Искусство манипуляции не ваше.
Это констатация фактов. Не судите по своих способностях.

P.S. Почему то все видят то что хотят видеть
0
pashulka
3448 / 1867 / 783
Регистрация: 01.12.2010
Сообщений: 3,737
14.02.2020, 15:37 19
Цитата Сообщение от gpetrv Посмотреть сообщение
Это констатация фактов. Не судите по своих способностях.
Улыбнуло) Во-первых, Вы тратите время явно не на решение, во-вторых, я уже написал как это можно осуществить.

Цитата Сообщение от gpetrv Посмотреть сообщение
Человек очевидно обратился не из нефиг делать а получить помощь/подсказку
Очевидно. Но любой скажет, что Вы эгоцентрист и ключевые слова, это я, хочу и мне. Об этом и речь.

Цитата Сообщение от gpetrv Посмотреть сообщение
P.S. Почему то все видят то что хотят видеть
Если два человека практически синхронно говорят Вам одно и тоже, может стоит задуматься ?
0
Narimanych
773 / 553 / 273
Регистрация: 23.03.2015
Сообщений: 1,907
14.02.2020, 15:47 20
Лучше промолчу....
0
14.02.2020, 15:47
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2020, 15:47

Запрет редактирования и удаления записей в табличной форме по условию
Есть табличная форма, есть поле Архив, если поле истина запретить редактирование и удаления...

Реализовать пролистывание записей с целью редактирования или удаления
Кнопки Удалить, след. и пред. запись созданы при помощи мастера, который привязывает к ним макрос,...

Панель администрации с функцией добавления/редактирования/удаления новости
сделать панель администрации с функцией добавления/редактирования/удаления новости


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.