В моем листе Excel есть столбцы, которые автоматически получают данные с другого листа.
Private Sub worksheet_change(ByVal target As Range) 'Auto fill ccells after Project No is selected
If target.Row > 3 And Not Intersect(target, Columns("A")) Is Nothing Then
Set rng = Cells(target.Row, 1)
'----------------------------
With rng.Offset(0, 1) 'Inv No
.FormulaR1C1 = "=IFerror(INDEX(D.Entry,MATCH(rc[-1],D.Entry[Project No],0),3),"""")"
.Value = .Value
End With
'-------------------------------
With rng.Offset(0, 2) 'Description
.FormulaR1C1 = "=IFerror(INDEX(D.Entry,MATCH(rc[-2],D.Entry[Project No],0),4),"""")"
.Value = .Value
End With
End If
End Sub
Как таковые, пользователи всегда имеют тенденцию перезаписывать данные из этих ячеек случайно. Поэтому, чтобы избежать этого, я планировал защитить эти ячейки от редактирования с помощью функции «Защитить лист», встроенной в Excel.
Но после установки параметров защиты для включения Edit Objects
и тестирования на работоспособность я получаю ошибку времени выполнения 1004. Снятие защиты с листа позволяет коду функционировать должным образом.
При этом в этой ситуации, как я могу сказать Excel, чтобы запретить пользователям редактировать в указанных c столбцах и в то же время разрешить автоматическое заполнение контента?