Как сделать ячейки доступными только для чтения в электронных таблицах? - PullRequest
5 голосов
/ 24 августа 2010

Я заполняю электронную таблицу значениями базы данных. Ячейки, которыми я заполняю данные, я хочу, чтобы они были доступны только для чтения пользователям. Как я могу это сделать?

Ответы [ 5 ]

5 голосов
/ 25 августа 2010

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

ActiveSheet.ProtectUser InterfaceOnly:=True

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

5 голосов
/ 24 августа 2010

Зависит от того, как вы хотите выбрать диапазон.Это всего лишь одна клетка.Если вы вернетесь к J1 и измените значение, вы должны получить запрос.

Private Sub Worksheet_Change(ByVal Target As Range)
  Range("J1").Select
  Selection.Locked = True
  ActiveSheet.Protect Contents:=True
  Range("K1").Select

End Sub

Ячейки не блокируются, пока лист не будет защищен.По умолчанию для всех ячеек установлено значение «Заблокировано», поэтому вам придется разблокировать ячейки, которые пользователи должны будут изменять.

1 голос
/ 24 августа 2010

Вы можете попробовать защитить клетки. Или вы можете написать его самостоятельно, используя событие дескриптора SelectionChange ...:

   Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect(Selection, Range("A24:A50")) Is Nothing Then
        Range("B1").Select
      End If
    End Sub
0 голосов
/ 24 августа 2010

В Excel вы можете зайти в меню Защита и указать, какие ячейки требуют пароль для изменения. Вы также можете указать несколько диапазонов.

Надеюсь, это то, что вы искали.

0 голосов
/ 24 августа 2010

Эта страница предлагает небольшой саб для защиты диапазона ячеек.

Выдержка

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Not Intersect(Target, Range("H1:H10")) Is Nothing Then 
        Target.Offset(0, 1).Select 
        MsgBox "you may not enter that cell" 
    End If 
End Sub

Для защиты H1:H10.Когда пользователь хочет изменить ячейку в пределах H1:H10, в предупреждающем сообщении говорится, что ячейка не может быть изменена, и вместо этого выбрана соседняя ячейка в следующем столбце (I).

...