Страницы: 1
RSS
Как запустить макрос (или сообщение) при вырезании ячейки
 
Здравствуйте! Помогите разобраться!  :)  
Составил программку и защитил лист кроме пользовательской группы ячеек.
Все прекрасно работает!
Но есть одна проблема: если пользователь захочет вырезать данные из одной незащищенной ячейки и вставит их в другую то все связи нарушатся и программа перестанет правильно работать.
Вопрос можно ли как то защитить группу ячеек от вырезания или чтобы при вырезании любой ячейки из заданного диапазона , к примеру, выскакивало сообщение о недопустимости данного действия и пользователь смог вернуть операцию.
Изменено: Vrajadas - 12.07.2013 16:53:23
 
Кросс: http://www.excelworld.ru/forum/10-5384-1
Я сам - дурнее всякого примера! ...
 
А я не могу понять - зачем к такому вопросу такой огромный файл?
 
да файл то здесь ни при чем... но так никто и не смог решить вопрос. Посоветовали заблокировать ПКМ. Но все равно же это не решение - опция Вырезать доступна через меню Правка. Да и в принципе запрет на копирование мне совсем не нужен. Копирование нужно оставить! Только запрет на вырезание. То есть вырезал ячейку а на это событие программа среагировала и послала сообщение "Ошибочка!"
 
Вот и я говорю - зачем такой файл?) Интересует именно "Вырезать"? А просто Delete можно делать, получается?
 
да просто Delete можно так как при этом не нарушается выполнение программы. А так к вопросу о большом файле, то это сокращенная версия программы. Там для уменьшения веса файла я удалил внутри еще несколько листов  :)  
Идея в том что при вырезании ячейки и вставке ее в другое место нарушается последовательность проигрывания нот понимаете?
Программа переводит *.txt в звук *.mid вот в чем фишка.
А если вместо ноты До будет играть Ре то это не порядок ;)
Изменено: Vrajadas - 12.07.2013 21:48:03
 
По поводу файла: я думаю, что в данном случае файл вообще не нужен.
По поводу вырезать/удалить: объясните в чём разница? Ведь в обоих случаях ячейка останется пустой.
 
При нажатии на Del просто происходит очистка ячейки и никакая нота не будет играть (причем именно через удаление так и реализована очистка значений листа), а при вырезании и вставке ячейки в другое место нотного листа мы получим другую мелодию...
и еще при этом на месте вырезанной ячейки не будет раскрывающегося списка нот...
Есть определенная запрограммированная последовательность нот. И если последовательность нарушить то нарушается и целостность всей программы и на выход идет файл с ошибкой!
Изменено: Vrajadas - 12.07.2013 21:55:26
 
Про ноты совсем не понял))) Может быть Вам запретить ВСТАВКУ  "в другое место" подойдёт?
 
да конечно
Хотя тоже немножко не то. Предположим пользователь захочет скопировать верхнюю строчку и вставить во вторую - по идее программа скушает. А так придется ручками набирать...

То есть операция Копирование - Вставка есть good
а вот Вырезание - Вставка, это конец программе

Вот и ломаю голову весь день...

Ничего лучшего кроме дублирования листа (резервного так сказать) пока не придумал
Изменено: Vrajadas - 12.07.2013 21:59:54
 
Что "конечно" - нужен запрет на вставку? По логике получается так. Если вырезали или даже просто скопировали, то вставив в запрещённый диапазон мы ломаем порядок нот. Если действительно нужен запрет на вставку, то подобные вопросы уже обсуждались. В поиске спросите: запретить вставку
 
Идея в том что при копировании вставлять смогут только в разрешенный диапазон так как остальные ячейки блокированы... А вот при вырезании то об этом я уже говорил...
То есть в операции копирования нет ничего страшного более того предполагалось что для экономии времени пользователи так и будут делать чтобы заново не набирать повторяющиеся участки мелодии!
Изменено: Vrajadas - 12.07.2013 22:14:39
 
Цитата
Vrajadas пишет:
То есть операция Копирование - Вставка есть good
а вот Вырезание - Вставка, это конец программе
Опять не понимаю: например, копирование и вставка (с последующим удалением - Delete) можно, а вырезание нельзя))
 
да копирование-вставка есть очень good, так как все разрешенные ячейки идентичны.
А Delete всего лишь очищает ячейку от старой инфы. Это так и было задумано!

Например я набрал "Са Ре Га --" скопировал и вставил это в другую строчку и сэкономил кучу времени!
а если я вырезал "Са Ре Га --" и вставил в другое место - то убил программу...  :!:  

Теперь я захотел набрать другую мелодию и для очистки тех же самых "Са Ре Га --" я воспользовался Delete  :)  И это есть очень даже Good!
Изменено: Vrajadas - 12.07.2013 22:24:10
 
Я могу Вам выслать рабочий вариант программы...
Чтобы поюзать... Инструкция подробная тоже есть...  :D  

Поможите братцы! Help!!!
 :o  
Дайте пожалуйста совет на запрет операции: Вырезать - Вставить
Изменено: Vrajadas - 12.07.2013 22:49:37
 
Код в модуле листа для блокировки вырезания-вставки :
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Application.CutCopyMode = xlCut Then
    Application.CutCopyMode = False
  End If
End Sub
Изменено: ZVI - 12.07.2013 23:48:45
 
Большущее спасибо!
Оказывается все так просто! Вот что значит опыт!!!  :)   :)   :)  

Сразу видно кто Мастер  :D  

Все заработало! Пункт Вставки после Вырезки не активен!!!

Никто теперь не сможет вставить вырезанные данные и таким образом нарушить ход выполнения программы!
При этом копирование чудесным образом продолжает работать!

Я счастлив! Программа закончена!

Аффтору ZVI большой респект за быстрый и очень грамотный ответ!!!
Изменено: Vrajadas - 13.07.2013 07:32:58
 
Цитата
Vrajadas пишет:
так никто и не смог решить вопрос. Посоветовали заблокировать ПКМ
Если бы Вы внимательно читали что Вам пишут, то обратили бы внимание на то что я посоветовал отключить не только ПКМ, но и Ctrl+X. Это по-Вашему не решение?
Страницы: 1
Наверх