Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2017, 16:21   #1
varikvn
Пользователь
 
Регистрация: 27.01.2017
Сообщений: 21
По умолчанию как защитить ячейки от изменения пользователем, но не макрос

когда в файле снята защита листа от изменений, внутренний макрос работает корректно.

Цель макроса - записать в определенную ячейку (исходя из набора правил) текущую дату.

Нужно защитить те ячейки, куда макрос пишет дату от изменений "вручную", что бы ячейка была запрещена на редактирование, но макрос мог в эту ячейку записывать данные.

В файле макрос пишет в ячейки: P65 - SZ66.

Текущий код макроса:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Long: col = Target.Column
If Target.Count > 1 Then Exit Sub
If Intersect(Range("P8:SZ9,P63:SZ64,P6 7:SZ68"), Target) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
If Cells(8, col) <> "" And Cells(9, col) <> "" And _
Cells(63, col) <> "" And Cells(64, col) <> "" Then
Cells(65, col) = Date
Else
Cells(65, col) = ""
End If
If Cells(8, col) <> "" And Cells(9, col) <> "" And _
Cells(67, col) <> "" And Cells(68, col) <> "" Then
Cells(66, col) = Date
Else
Cells(66, col) = ""
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Ошибка возникает именно при попытке макроса записать в защищенную от редактирования ячейку.

Файл у меня большой 400 КБ и версия excel 2010, потому приложить файл не могу

Помогите подкорректировать текущий макрос. Спасибо.
varikvn вне форума Ответить с цитированием
Старый 28.08.2017, 16:43   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

как вариант - защитить нужные ячейки только от пользователя.
это можно сделать через макрос.
Как защитить лист от пользователя, но не от макроса?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.08.2017, 17:13   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в Excel нет механизна защиты отдельных ячеек, в Excel - защищается лист.
а у ячеек есть свойство "Защищаемая ячейка". если это свойство активно - при защите листа данная ячейка будет защищена.

защитить лист от пользователей можно так:
ActiveSheet.Protect UserInterfaceOnly:=True

если лист защитить от пользователя, файл сохранить, закрыть, открыть... он окажется не защищенным при след. открытии файла. эту строку нужно выполнять при каждом новом открытии файла.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.08.2017, 17:53   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Кросс:
http://www.planetaexcel.ru/forum/ind...no-ne-makrosom
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как защитить от изменений ячейки к которым применяется макрос juliet85 Microsoft Office Excel 6 31.03.2016 08:25
макрос изменения цвета шрифта ячейки, при наличии определенной буквы Alex_91 Microsoft Office Excel 8 24.05.2012 21:44
Защитить код от изменения Sauber Помощь студентам 5 07.05.2011 02:34
макрос для изменения содержимого ячейки Cawa1990 Microsoft Office Excel 6 24.03.2010 18:19
Как увидеть изменения в БД, внесенные другим пользователем? Сергей089 Помощь студентам 5 12.02.2010 15:45