Здравствуйте! Позавчера мне светлые и умные головы этого форума очень хорошо помогли с решением проблемы в двух вопросах. Следуя их инструкциям и указаниям, мною была доведена таблица до удовлетворяющего состояния. Теперь возник еще один (самый главный вопрос) - Можно ли защитить ячейки, и скрыть в них формулы, чтобы пользователи (а их кроме меня будет еще 2 человека), не внесли изменения в структуру таблиц, но при этом сохранить работоспособность макросов на добавление показателей из справочников. Пользователю доступны для редактирования только ячейки со светло-синим фоном и выбор из справочников (светло-зеленый фон), все белые ячейки - недоступны. Если делать защиту листа с вводом пароля, тогда нарушается работоспособность макроса на добавление строк в таблицу. Удалось добиться скрытия формул и защиты ячеек и при этом работоспособности макроса только на вкладке "Производственные затраты и ФР" путем помещения следующего кода перед началом макроса: [vba]
[/vba] , а на вкладке "Реализация и себестоимость" и "Сводный отчет" - нет. Если кто-то сталкивался с этим вопросом, или есть готовое решение, помогите, пожалуйста. Спасибо.
Здравствуйте! Позавчера мне светлые и умные головы этого форума очень хорошо помогли с решением проблемы в двух вопросах. Следуя их инструкциям и указаниям, мною была доведена таблица до удовлетворяющего состояния. Теперь возник еще один (самый главный вопрос) - Можно ли защитить ячейки, и скрыть в них формулы, чтобы пользователи (а их кроме меня будет еще 2 человека), не внесли изменения в структуру таблиц, но при этом сохранить работоспособность макросов на добавление показателей из справочников. Пользователю доступны для редактирования только ячейки со светло-синим фоном и выбор из справочников (светло-зеленый фон), все белые ячейки - недоступны. Если делать защиту листа с вводом пароля, тогда нарушается работоспособность макроса на добавление строк в таблицу. Удалось добиться скрытия формул и защиты ячеек и при этом работоспособности макроса только на вкладке "Производственные затраты и ФР" путем помещения следующего кода перед началом макроса: [vba]
[/vba] , а на вкладке "Реализация и себестоимость" и "Сводный отчет" - нет. Если кто-то сталкивался с этим вопросом, или есть готовое решение, помогите, пожалуйста. Спасибо.Account196
Не защищая лист и используя все возможности Excel. Выделить ячейки с формулами: Правка-Перейти-выделить поставить точку у формул Данные-Проверка-Параметры: тип данных: другой, Формула:=""
Не защищая лист и используя все возможности Excel. Выделить ячейки с формулами: Правка-Перейти-выделить поставить точку у формул Данные-Проверка-Параметры: тип данных: другой, Формула:=""Kuzmich
Как вариант — просто в событии Worksheet_Change анализируем Target и если он белый, то Application.Undo. А в начале макроса отключаем события (и не забываем включить их в конце).
Как вариант — просто в событии Worksheet_Change анализируем Target и если он белый, то Application.Undo. А в начале макроса отключаем события (и не забываем включить их в конце).StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Не защищая лист и используя все возможности Excel. Выделить ячейки с формулами: Правка-Перейти-выделить поставить точку у формул Данные-Проверка-Параметры: тип данных: другой, Формула:=""
Спасибо за подсказку, но вообще ничего не происходит. Формулы как показывались, так и остаются. Ячейки для редактирования доступны. И при повторном входе в ячейки с формулами по пути Данные->Проверка->Параметры->Формула, в поле значения ="" нет. Оно остается пустым.
Не защищая лист и используя все возможности Excel. Выделить ячейки с формулами: Правка-Перейти-выделить поставить точку у формул Данные-Проверка-Параметры: тип данных: другой, Формула:=""
Спасибо за подсказку, но вообще ничего не происходит. Формулы как показывались, так и остаются. Ячейки для редактирования доступны. И при повторном входе в ячейки с формулами по пути Данные->Проверка->Параметры->Формула, в поле значения ="" нет. Оно остается пустым.Account196
Private Sub Workbook_Open() For Each Sh In Me.Worksheets Sh.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowFiltering:=True, UserInterfaceOnly:=True, Password:="1111" Next Sh Sheets("Главная форма").Select End Sub
[/vba]
В модуль книги напишите вот так [vba]
Код
Private Sub Workbook_Open() For Each Sh In Me.Worksheets Sh.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowFiltering:=True, UserInterfaceOnly:=True, Password:="1111" Next Sh Sheets("Главная форма").Select End Sub
Спасибо. Написал, проверил. Изменений нет. Добавление строк на вкладке "Реализация и себестоимость" не производится. Как были формулы открыты, так и остались, но после снятия пароля (1111), добавление возможно. В модуль книги, как Вы и сказали, прописал.
Спасибо. Написал, проверил. Изменений нет. Добавление строк на вкладке "Реализация и себестоимость" не производится. Как были формулы открыты, так и остались, но после снятия пароля (1111), добавление возможно. В модуль книги, как Вы и сказали, прописал.Account196
Чуть переписал макрос А по поводу невидимости формул - я как-то надеялся, что Вы сможете самостоятельно зайти в защищенные ячейки Формат - Защита и поставить галку Скрыть формулы
Чуть переписал макрос А по поводу невидимости формул - я как-то надеялся, что Вы сможете самостоятельно зайти в защищенные ячейки Формат - Защита и поставить галку Скрыть формулы_Boroda_
А по поводу невидимости формул - я как-то надеялся, что Вы сможете самостоятельно зайти в защищенные ячейки Формат - Защита и поставить галку Скрыть формулы
Пробовал, Александр. Заходил, ставил. Ctrl+G -> Выделить (.) формулы -> Ок. Далее Правой кнопкой мыши -> Формат ячеек -> Защита [v] Скрыть формулы -> Ок. Мистика какая-то. Теперь добавление строк при нажатии кнопки "Добавить позицию в отчет" на вкладке "реализация и себестоимость" возможно только одной (первой), а сами формулы по адресу, например, B10, D10,E10, K10,L10,M10 стираются и заменяются на #Н/Д (нет данных)... Допуска на добавленные ячейки C10,F10,G10,H10,I8,J8,I10,J10 (предназначенных для ввода информации пользователями) нет.
А по поводу невидимости формул - я как-то надеялся, что Вы сможете самостоятельно зайти в защищенные ячейки Формат - Защита и поставить галку Скрыть формулы
Пробовал, Александр. Заходил, ставил. Ctrl+G -> Выделить (.) формулы -> Ок. Далее Правой кнопкой мыши -> Формат ячеек -> Защита [v] Скрыть формулы -> Ок. Мистика какая-то. Теперь добавление строк при нажатии кнопки "Добавить позицию в отчет" на вкладке "реализация и себестоимость" возможно только одной (первой), а сами формулы по адресу, например, B10, D10,E10, K10,L10,M10 стираются и заменяются на #Н/Д (нет данных)... Допуска на добавленные ячейки C10,F10,G10,H10,I8,J8,I10,J10 (предназначенных для ввода информации пользователями) нет.Account196
а зачем у Вас в модуле книги два макроса Workbook_Open?
Да, кстати, исправил, но после того, как поместил на форум картинку. Закомментировал. А как я понял уже давно, комментарии в макросах не выполняются. В оригинале убрал первый Workbook_Open
а зачем у Вас в модуле книги два макроса Workbook_Open?
Да, кстати, исправил, но после того, как поместил на форум картинку. Закомментировал. А как я понял уже давно, комментарии в макросах не выполняются. В оригинале убрал первый Workbook_OpenAccount196
Сообщение отредактировал Account196 - Пятница, 14.09.2018, 23:29
Sub Formula_Protect_with_CellValidation() If ActiveWindow.RangeSelection.SpecialCells(xlCellTypeFormulas) Is Nothing Then Exit Sub ActiveWindow.RangeSelection.SpecialCells(xlCellTypeFormulas).Select With Selection.Validation .Delete .Add Type:=xlValidateCustom, Formula1:="=""""" .ErrorTitle = "В ячейке формула!": .ErrorMessage = "Ввод данных запрещён" & vbCrLf & "Нажмите ""ОТМЕНА""" .ShowError = True End With End Sub
[/vba]Защищает от изменения ячейки с формулами в выделенном диапазоне.
Из моих старых запасов:[vba]
Код
Sub Formula_Protect_with_CellValidation() If ActiveWindow.RangeSelection.SpecialCells(xlCellTypeFormulas) Is Nothing Then Exit Sub ActiveWindow.RangeSelection.SpecialCells(xlCellTypeFormulas).Select With Selection.Validation .Delete .Add Type:=xlValidateCustom, Formula1:="=""""" .ErrorTitle = "В ячейке формула!": .ErrorMessage = "Ввод данных запрещён" & vbCrLf & "Нажмите ""ОТМЕНА""" .ShowError = True End With End Sub
[/vba]Защищает от изменения ячейки с формулами в выделенном диапазоне.Alex_ST