Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/как защитить ячейки от изменения пользователем, но не макрос - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
как защитить ячейки от изменения пользователем, но не макрос
varikvn Дата: Понедельник, 28.08.2017, 16:17 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

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

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

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

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

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

[vba]
Код
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,P67: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
[/vba]

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

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

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

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

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

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

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

[vba]
Код
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,P67: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
[/vba]

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

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

Помогите подкорректировать текущий макрос. Спасибо.

Автор - varikvn
Дата добавления - 28.08.2017 в 16:17
vikttur Дата: Понедельник, 28.08.2017, 16:18 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

 
Ответить
СообщениеКросс
http://www.planetaexcel.ru/forum....akrosom

Автор - vikttur
Дата добавления - 28.08.2017 в 16:18
Sancho Дата: Вторник, 29.08.2017, 08:33 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 279
Репутация: 19 ±
Замечаний: 0% ±

2007, 2010, 2013
varikvn, нужно разрешить макросу править ячейки [vba]
Код

Const PWD = "222"

Sub Worksheet_activate()
  Me.Protect Password:=PWD, UserInterfaceOnly:=1
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Worksheet_activate
Dim col As Long: col = Target.Column
If Target.Count > 1 Then Exit Sub
If Intersect(Range("P8:SZ9,P63:SZ64,P67: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

[/vba]

пароль 222

кросс не посмотрел, там уже все расписано оказывается, ну да ладно пусть здесь тоже будет
К сообщению приложен файл: 222.xlsm (20.6 Kb)


Сообщение отредактировал Sancho - Вторник, 29.08.2017, 09:43
 
Ответить
Сообщениеvarikvn, нужно разрешить макросу править ячейки [vba]
Код

Const PWD = "222"

Sub Worksheet_activate()
  Me.Protect Password:=PWD, UserInterfaceOnly:=1
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Worksheet_activate
Dim col As Long: col = Target.Column
If Target.Count > 1 Then Exit Sub
If Intersect(Range("P8:SZ9,P63:SZ64,P67: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

[/vba]

пароль 222

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

Автор - Sancho
Дата добавления - 29.08.2017 в 08:33
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!