Прошу помочь решить такую задачу. Есть файл с множеством листов и формул. Все листы защищены паролем. На каждом листе есть пустые незащищенные ячейки, предназначенные для ввода информации пользователем. Что требуется: Если на каком-то определенном листе пользователем была заполнена хоть одна доступная ему (незащищенная) ячейка, то после закрытия файла, ВСЕ ячейки на ЭТОМ листе, которые пользователю были доступны ранее, перестают быть доступными (становятся защищенными). Т.е. пользователь лишается возможности вносить изменения на листе после того, как уже внес значения и закрыл файл.
Прошу помочь решить такую задачу. Есть файл с множеством листов и формул. Все листы защищены паролем. На каждом листе есть пустые незащищенные ячейки, предназначенные для ввода информации пользователем. Что требуется: Если на каком-то определенном листе пользователем была заполнена хоть одна доступная ему (незащищенная) ячейка, то после закрытия файла, ВСЕ ячейки на ЭТОМ листе, которые пользователю были доступны ранее, перестают быть доступными (становятся защищенными). Т.е. пользователь лишается возможности вносить изменения на листе после того, как уже внес значения и закрыл файл. ASV
ВСЕ ячейки на ЭТОМ листе, которые пользователю были доступны ранее, перестают быть доступными (становятся защищенными)
Но д.б.возможность сделать эти самые ячейки обратно незащищенными. Так ведь? Т.е. это какие-то фиксированные диапазоны на каждом из листов - их нужно делать то защищенными, то нет. Так?
ВСЕ ячейки на ЭТОМ листе, которые пользователю были доступны ранее, перестают быть доступными (становятся защищенными)
Но д.б.возможность сделать эти самые ячейки обратно незащищенными. Так ведь? Т.е. это какие-то фиксированные диапазоны на каждом из листов - их нужно делать то защищенными, то нет. Так?nilem
В этом файле два листа. Все незащищенные ячейки, предназначенные для ввода данных пользователем, выделены зеленым цветом. Остальные все защищены. Таких листов, как "1" здесь будет 31 - по 1 листу на каждый день месяца. Страница "Старт" - это стартовая страница, с которой начинается работа с файлом, здесь указываются начальные данные. Получается, нужно чтобы срабатывала блокировка ячеек (зеленых) на листе "Старт" и листах "1-31".
В этом файле два листа. Все незащищенные ячейки, предназначенные для ввода данных пользователем, выделены зеленым цветом. Остальные все защищены. Таких листов, как "1" здесь будет 31 - по 1 листу на каждый день месяца. Страница "Старт" - это стартовая страница, с которой начинается работа с файлом, здесь указываются начальные данные. Получается, нужно чтобы срабатывала блокировка ячеек (зеленых) на листе "Старт" и листах "1-31".ASV
Можно попробовать с именованными диапазонами см. файл
[vba]
Код
Sub LockRanges() Dim nm As Name For Each nm In ThisWorkbook.Names If InStr(nm.Name, "LockRng") Then With nm.RefersToRange .Parent.Unprotect '.Interior.ColorIndex = 36 .Locked = True .Parent.Protect End With End If Next nm End Sub
Sub UnLockRanges() Dim nm As Name For Each nm In ThisWorkbook.Names If InStr(nm.Name, "LockRng") Then With nm.RefersToRange .Parent.Unprotect .Locked = False .Parent.Protect End With End If Next nm End Sub
[/vba]
Можно попробовать с именованными диапазонами см. файл
[vba]
Код
Sub LockRanges() Dim nm As Name For Each nm In ThisWorkbook.Names If InStr(nm.Name, "LockRng") Then With nm.RefersToRange .Parent.Unprotect '.Interior.ColorIndex = 36 .Locked = True .Parent.Protect End With End If Next nm End Sub
Sub UnLockRanges() Dim nm As Name For Each nm In ThisWorkbook.Names If InStr(nm.Name, "LockRng") Then With nm.RefersToRange .Parent.Unprotect .Locked = False .Parent.Protect End With End If Next nm End Sub
Что-то не срабатывает. Может я что-то не так делаю?.. Я вашем в коде есть привязка к цвету ячеек "... Interior.ColorIndex = 36 ..." Может быть на разных компьютерах цвета по разному отображаются? Потому что изначально были цвета зеленые, а сейчас после вставки макроса стали бледно желтыми (или так и было задумано?). Или цвета здесь не имеют значения?
Что-то не срабатывает. Может я что-то не так делаю?.. Я вашем в коде есть привязка к цвету ячеек "... Interior.ColorIndex = 36 ..." Может быть на разных компьютерах цвета по разному отображаются? Потому что изначально были цвета зеленые, а сейчас после вставки макроса стали бледно желтыми (или так и было задумано?). Или цвета здесь не имеют значения?ASV