Excel 2016: как разрешить различным пользователям редактировать разные диапазоны ячеек - PullRequest
0 голосов
/ 21 ноября 2018

Как разрешить различным пользователям (John, Paul и Mika) редактировать разные ячейки на листе?

  • John - редактировать только ячейки A2 в C5 (ДИАПАЗОН 1)
  • Mika предназначен для редактирования только ячеек E2 в G5 (ДИАПАЗОН 2)
  • Paul для редактирования только ячеек H2 в K5 (ДИАПАЗОН 3)

В 'allow users to edit ranges' я создал 3 диапазона для указанных выше ячеек без пароля.Каждый диапазон содержит разрешение имени пользователя.

Когда я выбираю range 1, тогда опция allow users to edit ranges равна disabled.Я не могу применить то же самое для других 2 пользователей ...


Может кто-нибудь помочь и предоставить правильные шаги / код VBA?

1 Ответ

0 голосов
/ 22 ноября 2018

В событии workbook_beforeclose мы блокируем все ячейки.В событии workbook.open мы получаем имя пользователя для входа и выборочно разблокируем желаемый диапазон для этого входа.Если пользователь не включает макросы, тогда все защищено, если они активируют, то доступен только желаемый диапазон.(Вы должны самостоятельно закрыть электронную таблицу, чтобы защита вступила в силу).Это предполагает корпоративную среду, в которой осуществляется вход в систему.Этот код входит в модуль рабочей книги:

Option Explicit
Const pword = "your password here"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
For Each ws In Worksheets
ws.Unprotect pword
ws.UsedRange.Locked = True
ws.Protect pword
Next ws
End Sub

Private Sub Workbook_Open()
Dim LogonName As String
LogonName = Environ("UserName")
Dim rangetoedit As Range
Select Case LogonName
Case "John"
    Set rangetoedit = Worksheets(1).Range("A2:C5")
Case "Paul"
    Set rangetoedit = Worksheets(1).Range("H2:K5")
Case "Mika"
    Set rangetoedit = Worksheets(1).Range("E2:G5")
End Select
Worksheets(1).Unprotect pword
rangetoedit.Locked = False
Worksheets(1).Protect pword

End Sub

Вы также захотите защитить паролем свой код VBA

...