Как использовать ячейку Excel для автоматического заполнения данных, а также запретить пользователям вводить данные вручную? - PullRequest
0 голосов
/ 26 февраля 2020

В моем листе 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 столбцах и в то же время разрешить автоматическое заполнение контента?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...