With extra sheet with Users and there passwords, to be hide
and dynamic named range with users for the validation list
Option Explicit
Private Sub Worksheet_Activate()
With Sheets("sheet1")
.Unprotect Password:="test"
.Range("B7") = ""
.Range("B8", "F20").Locked = True
.Protect Password:="test"
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim pwd As String, my_users As Range, pwdstored As String, free_range As Range
Set free_range = Sheets("sheet1").Range("B8", "F20")
If Target.Address = "$B$7" And Target <> "" Then
With Sheets("Passwords").Range("A:A")
Set my_users = .Find(Target, LookIn:=xlValues, lookat:=xlWhole)
If Not my_users Is Nothing Then
pwdstored = .Cells(my_users.Row, 2)
Else
MsgBox "Invalid User"
Exit Sub
End If
pwd = Application.InputBox("Password for " & Target & ":", _
"Enter Password", Type:=2)
If pwd = pwdstored Then
Sheets("sheet1").Unprotect Password:="test"
free_range.Locked = False
Sheets("sheet1").Protect Password:="test"
Else
MsgBox "Bad password"
Sheets("sheet1").Unprotect Password:="test"
free_range.Locked = True
Sheets("sheet1").Protect Password:="test"
End If
End With
End If
End Sub
Kind regards
Leo
Bookmarks