Страницы: 1
RSS
защита от ввода данных с помощью vba
 
Здравствуйте уважаемые.  
Опять назрел вопрос о защите данных.  
Посмотрел на просторах форума, нашел почти то что требуется, но не осилил, через это обращаюсь к общественности.  
 
Защита от ввода через "данные-проверка" не реализуется, по причине того что на полях для ввода у меня уже есть "список" значений для выбора.  
 
Подозреваю что код должен получиться не слишком сложный.  
Прикладываю файл.  
Извиняйте, если, как говорится, боян.  
Спасибо.
 
основное не написал, доп.строка с данными, которые меняются ежедневно на 1 или 0  
1 - можно заполнять  
0 - нельзя заполнять
 
Народ, если есть кудесники на VBA, подскажите пожалуйста решение, с меня небольшое вознаграждение на сотовый, ибо надо во как, а "данные проверка список" убирать не хочу, чтобы защиту делать через меню.
 
Может, защиту листа использовать.
 
У меня чуть проще:  
Private Sub Worksheet_Change(ByVal Target As Range)  
   If Intersect(Target, [f22:n22]) Is Nothing Then Exit Sub
   Me.Unprotect  
   Range(Cells(5, Target.Column), Cells(19, Target.Column)).Locked = Target = 0  
   Me.Protect  
End Sub
Я сам - дурнее всякого примера! ...
 
ShAM и KuklP спасибо большое.  
ShAM напишите Ваш личный адрес эл.почты пожалуйста.
 
{quote}{login=ztn3t1}{date=21.11.2012 12:37}{thema=}{post}ShAM напишите Ваш личный адрес эл.почты пожалуйста.{/post}{/quote}  
Можете посмотреть в этой теме (и не только мой адрес)  
http://www.planetaexcel.ru/forum.php?thread_id=36158&page_forum=6&allnum_forum=87
 
Прошу прощения за беспокойство, и не хотелось бы говорить эту фразу но "не работает". Вернее, работает, но строго один раз :)  
Скорее всего, я не совсем корректно задал вопрос.  
 
Дело в том, что у меня стоит формула =СЕГОДНЯ() в строке, и если находит соответствие то ставит единицу или ноль (да/нет). И уже по этой строке с единицами и нулями код проверяет где единица и разрешает в соответствующем столбце ввод данных. Так вот, по неведомой мне причине ввод данных не всегда соответствует требованию. Т.е. могу вводить данные за предыдущие периоды, где по идее, должен быть запрет, или наоборот, стоит разрешение на ввод данных а ничего поделать не могу.  
Пробовал оба кода, результат одинаковый, подозреваю что дело в защите листа и моей дремучести.  
Прикладываю файл с примером.  
 
99991
 
Вы же не говорили, что у Вас там формулы.  
Private Sub Worksheet_Calculate()  
   Dim c As Range: Me.Unprotect  
   For Each c In [f22:n22].Cells
       Range(Cells(5, c.Column), Cells(19, c.Column)).Locked = c = 0  
   Next  
   Me.Protect  
End Sub  
Награду все равно Алишеру(ShAM)перечисляйте:-)
Я сам - дурнее всякого примера! ...
 
Ещё раз хочу поблагодарить за помощь форумчан, всё отлично работает, но есть нюанс! :)  
Код работает без пароля на защиту листа, т.е. снятие защиты листа осуществляется путем "сервис-защита-снять защиту листа" (без запроса на пароль), и как говорится, делай с ним что хош! :)  
Подскажите пожалуйста, как мне добавить в код пароль на защиту, допустим, 123.  
 
Private Sub Worksheet_Calculate()  
Dim c As Range: Me.Unprotect  
For Each c In [i113:am113].Cells
Range(Cells(6, c.Column), Cells(105, c.Column)).Locked = c = 0  
Next  
Me.Protect  
End Sub
 
Me.Protect "123"  
Me.Unprotect "123" 'снять
 
Спасибо!  
Удачного дня! :)  
 
45453
Страницы: 1
Читают тему
Loading...