Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Защита ячеек  (Прочитано 9825 раз)
0 Пользователей и 1 Гость смотрят эту тему.
gveret_nasty
Гость
« : 27-04-2005 09:36 » 

Всех приветствую.
Помогите с барабашкой: для нейтрализации кривизны рук моих пользователей приходится ставить защиту листа Excel и разрешать изменение определённого диапазона. Диапазон не меняется.
Проблема №1: Не могу найти в Справке, как прописывать разрешённый диапазон в коде. В коде только ставится защита, а разрешённый диапазон - ручками, из Меню.
Проблема №2: Во время работы разрешённый диапазон смещается, дробится, в общем, меняется. После каких действий, отследить не удаётся, потому что менеджер вместо ответа на вопрос "Что ты только что сделал" только нечленораздельно мычит.
Из-за этого приходится бегать сайгаком по 20и менеджерам и снимать защиту-выставлять разрешённый диапазон-ставить защиту.
Что делать?
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #1 : 27-04-2005 10:41 » 

Может при установки защиты запретить пользователям вставлять строки и столбцы, тогда и диапозон не будет дробится
вот пример кода, как заблокировать область

    Range("B1:C3").Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

"Сервис-Макрос-Начать запись" очень часто помагает

или что-то не так понял?
Записан

I Have Nine Lives You Have One Only
THINK!
gveret_nasty
Гость
« Ответ #2 : 27-04-2005 10:58 » 

Скопировала приведённый тобой код, он не выполняется: "Нельзя установить свойство Locked класса range" на незащищённом листе. А на защищённом защищено всё, не только этот диапазон. В этом месте у меня непонятки. Надо защитить лист и прописать разрешения, а защитить отдельно выбранные ячейки нельзя. Так?
Я им и так закрыла добавление-удаление и строк, и столбцов. Кажется, барабашка появляется после какой-то хитрой вставки из других файлов, но не всегда, а случайным образом.
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #3 : 27-04-2005 11:24 » new

gveret_nasty сделаем проще
какая цель зашиты?
для чего нужно?

может найдем другие пути решения
Записан

I Have Nine Lives You Have One Only
THINK!
gveret_nasty
Гость
« Ответ #4 : 27-04-2005 12:07 » 

Зачем другие решения? Всё получилось - я то, что ты написал, вывернула наизнанку, теперь всё работает:
Sub Wrapp()
If ActiveSheet.Name = "Name" Then
    Cells.Select
    Selection.Locked = True
    Range(Cells(7, 1), Cells(10, 1)).Locked = False
    ...
    Range(Cells(15, 1), Cells(65536, 256)).Locked = False
End If
ActiveSheet.Protect Password:=Pas, DrawingObjects:=True, Contents:=True, Scenarios:=True _
    , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
    AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True
End Sub
Т.е. снимаю защиту листа, всем ячейкам присваиваю свойство "защищаемая", потом выбираю нужные, присваиваю "незащищаемая", потом ставлю защиту. И всё в коде!! Ты мне очень помог, на самом деле, теперь я буду делать что-то новое, а не скакать по менеджерам.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines