我有一个将分发给多个部门的工作簿。每个部门在工作簿中都有自己的工作表,他们必须在某些单元格中输入注释。我对每张纸张进行密码保护,除了他们要输入其纸币的单元格(许多公式引用其他纸张,除了我之外,任何人都无法触及)。除了密码保护之外,我还添加了一个VBA代码,以便在用户添加备注之前立即提示用户输入密码(以阻止其他部门将备注输入到错误的表格中。)每个部门都有自己的密码。问题是,当输入正确的部门密码时,我的代码会取消保护整个工作表,将我锁定的单元格暴露给其他用户。我需要一个代码,在选择工作表时会提示用户,并且当密码正确输入时,它只会取消保护未锁定的单元格。这就是我到目前为止所做的:
Sub Worksheet_Activate()
Const Passwrd As String = "abc123"
Dim sInput As Variant
Dim Attempt As Integer
Me.Protect Password:=Passwrd
Attempt = 1
Do
sInput = InputBox("Please enter the password for this sheet", "Password Required Attempt:" & Attempt)
If StrPtr(sInput) = 0 Then
'cancel pressed
Exit Do
ElseIf sInput = Passwrd Then ' Valid Password
Me.Unprotect Password:=Passwrd
Exit Do
Else
MsgBox "Invalid Password", 48, "Invalid"
Attempt = Attempt + 1
End If
Loop Until Attempt > 3 ' "Don't let the inputbox close if the password is not correct
End Sub