Страницы: 1
RSS
Защита ячейки от ввода
 
Здравствуйте , не могли бы подсказать как реализовать запрет на ввод данных вручную и что только можно при дабл клике (вызывается форма) заполнять значения.
 
забыл дописать что только в 2 колонках это сделать.
 
Поставлю вопрос более грамотно , если такой  способ -поставить ячейки защищенными , но при двойном клике (открывается форма ) выполняется событие (ячейки становятся не защищенными ), выбираются данные, вводятся  и ячейки становятся защищенными
 
в поиске сайта нашел как это сделать , запись вводиться, но есть небольшая проблема что после вода записи в ячейку выскакивает стандартное сообщение что запись защищена ......можно ли его убрать ?
 
Посмотрите здесь: http://www.excel-vba.ru/chto-umeet-excel/kak-zashhitit-list-ot-polzovatelya-no-ne-ot-makrosa/
 
Да да я так же и делал ,запись вносится , но вылезает это тупое окошко после ввода ..........
 
Если всё делали правильно, - такого быть не должно: пользователю будет выдаваться предупреждение, а макрос спокойно сработает. Можете и на нашем Форуме поискать - ключевое слово: UserInterfaceOnly
 
а можно убрать это предупреждение?
 
Можно - запретить пользователю даже выделять эту ячейку.
 
да нет мне ненадо запрещать выделять .......мне надо сделать так чтобы когда щелкаешь по двойной кнопке по ячейке вылезала меню с выбором , а при закрытие формы ставилась защита . Я это сделал , но когда вносится изменение , выскакивает ошибка предупреждающая что ячейки зашифрованы , но данные вносятся нормально при закрытие этого предупреждения. Вот и вопрос , можно ли сделать так чтобы не выскакивало это окно .
 
Ещё раз: если всё сделано правильно, то сообщение не должно выскакивать.    
Другой вариант: при внесении данных с формы на лист макрос сначала снимает защиту, а затем ставит её снова. Установку/снятие защиты можно записать макрорекордером.
 
ActiveSheet.Unprotect "1" это до записи  
 
ActiveSheet.Protect Password:="1", UserInterfaceOnly:=True это после  
вот так я делаю
 
Перечитайте внимательно статью, на которую я давал ссылку. Обратите внимание, что там упоминается модуль книги. Куда Вы вставляете процедуры - я не знаю. Больше мне сказать нечего.
 
а всего то надо прицепить файл. а не заниматься перепиской.
 
{quote}{login=}{date=02.12.2011 05:08}{thema=}{post}ActiveSheet.Unprotect "1" это до записи  
 
ActiveSheet.Protect Password:="1", UserInterfaceOnly:=True это после  
вот так я делаю{/post}{/quote}  
 
я пишу это в отдельный sub    
в скрываемый модуль    
Option Private Module  
Sub defend()  
   Const MyPassword = "1111"  
   With ActiveSheet  
       .Unprotect Password:=MyPassword  
       .EnableOutlining = True  
       .Protect Password:=MyPassword, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True  
   End With      
End Sub  
 
Sub undefend()    
   Const MyPassword = "1111"  
   With ActiveSheet  
       .Unprotect Password:=MyPassword  
       .EnableOutlining = True  
   End With  
End Sub  
 
а потом только вызываю    
call undefend  
  тут ваш код  
call defend  
 
ну и пароль на проект
 
вот файл......  
я подумал тут дело в другом ......  
когда мы в незащищенный лист копируем ячейку и вставляем с помощью формы мы попадаем в редактирование внесенной записи, когда же мы защищаем лист то при внесение записи мы не можем попасть и вылезает это сообщение.  Я думаю что дело тут в перехвате попадания в эту ячейку, иными словами подтверждение о внесение данных.
 
Попробуйте так..
 
м.....в чем же проблема...
 
CommandButton скрыт , но не Hide=True.а Width=0, еще плюс Default=true для закрытия формы по Enter , и чтобы выйти из режима редактирования уходим в коде CommandButton1_KeyUp в другую ячейку. И только тогда уходим из кода.
 
ахахах оказалось все довольно просто , спасибо маугли за файл , проблема была в том что надо было просто после обработчика внесения данных поставить    
Unload Me  
   ActiveCell.Offset(1).Activate  
и все...
Страницы: 1
Читают тему
Наверх