В событии 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