Запрет на редактирование ячеек

Автор RESURGAM, 3 октября 2022, 10:44

0 Пользователи и 1 гость просматривают эту тему.

RESURGAM

Здравствуйте! Прошу помощи. Нужно поставить запрет на редактирование заполненных ячеек. Т.е. есть документ, в общем доступе, данные вносятся сотрудниками разных отделов. Нужно сделать так, чтобы ячейки, с введенными ранее данными, нельзя было отредактировать постфактум, либо отредактировать можно было бы только с паролем. Подскажите, пожалуйста, как это сделать.
Я пыталась прописать код:

Option VBASupport 1
Option Compatible
'-----------------------------------------------

SUB hide()
ThisComponent.BasicLibraries.VBACompatibilityMode=true

End Sub
Private Sub Worksheet_Change(ByVal Target As Range)   
If Target.Count > 1 Then Exit Sub 
    ActiveSheet.Unprotect 
    Target.Locked = True 
    ActiveSheet.Protect   Password:="1234"   
End Sub 

ругается: Ошибка времени выполнения Basic.
'449'
Аргумент является обязательным.
 Буду благодарна за подробные пояснения, т.к. совсем новичок в VBA...

Или, может быть, есть другие пути решения этой задачи...

gabix

#1
VBA, говорите?
Посмотрите у Питоньяка раздел 6.16 'Protecting your data'.

sokol92

Добрый день!

Метод защиты, указанный в стартовом сообщении, блокирует каждую ячейку сразу после корректировки. В Calc так тоже можно, но при этом пользователь должен знать о наличии кнопки Отмены, чтобы сразу же исправить собственную невольную ошибку.
Sub ProtectChangedCell(oRange)
  Dim CellProtection
  CellProtection=oRange.CellProtection
  CellProtection.IsLocked=True
  oRange.CellProtection=CellProtection
End Sub
Указанный макрос нужно занести в документ и в событиях листа (правая кнопка мыши по ярлыку листа) назначить на событие "Содержимое изменено".
В прилагаемом документе - примере лист зашифрован паролем "1234", все ячейки не защищены от ввода.

Пробуйте!
Владимир.

mikekaganski

Можно подумать об использовании условного форматирования с условием "ячейка не пуста" и атрибутом "заблокирована". Не требует макросов вообще.
С уважением,
Михаил Каганский

sokol92

#4
Цитата: mikekaganski от  3 октября 2022, 15:17подумать об использовании условного форматирования
Здравствуйте, Михаил!

Интересная мысль! "Мигранту" из Excel в голову не придет - там условные форматы имеют ограничения, в частности, нет свойств, относящихся к защите ячеек.
Для автора темы выкладываю пример с реализацией идеи. В стиле ячеек "Базовый" снят флажок с элемента управления "Защищено" на вкладке "Защита ячейки". На основе стиля базовый создан стиль "ЗащитаЯчейки", в котором указанный элемент управления включен.
Владимир.

eeigor

Вариант с УФ работает без пароля. То есть отредактировать можно
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

bigor

Цитата: eeigor от  6 октября 2022, 08:40То есть отредактировать можно
Я тестил под линукс на LO 7.4. там заполненные ячейки блокировались. Попробовал под винду на LO 7.3.2.2 не блокируется, глянул правила - отсутствует УФ.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

sokol92

Я проверял вариант с УФ на 7.4.1.2 Win 10.
Владимир.

ArsKam

Цитата: eeigor от  6 октября 2022, 08:40Я тестил под линукс на LO 7.4. там заполненные ячейки блокировались. Попробовал под винду на LO 7.3.2.2 не блокируется, глянул правила - отсутствует УФ.
у меня на windows защита ячейки действует после установки защиты листа