添加提示密码解锁特定单元格的第 3 个形状



目前我正在使用两种形状(一种标题为"锁定",另一种标题为"解锁")来解锁/锁定工作簿中的单元格。代码如下:

要锁定的宏:

Sub ProtectAll()
Dim wSheet As Worksheet
Dim Pwd As String
Pwd = "passwordhere"
For Each wSheet In Worksheets
wSheet.Protect Password:=Pwd, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowFormattingColumns:=True, AllowFormattingRows:=True
Next wSheet
ActiveWorkbook.Sheets("Master").Activate
End Sub

要解锁的宏:

Sub UnProtectAll()
Dim wSheet As Worksheet
Dim Pwd As String
Pwd = InputBox("Enter your password to unprotect all worksheets", "Password Input")
On Error Resume Next
For Each wSheet In Worksheets
wSheet.Unprotect Password:=Pwd
Next wSheet
If Err <> 0 Then
MsgBox "You have entered an incorrect password. All worksheets could not " & _
"be unprotected.", vbCritical, "Incorrect Password"
End If
On Error GoTo 0
ActiveWorkbook.Sheets("Master").Activate
End Sub

我的问题是;如何添加提示密码锁定/解锁多张纸上的特定单元格的第三和第 4 个形状?目标是保持所有内容都处于锁定状态,除了具有"价格"的单元格,如果用户知道密码,他们可以更改。

我尝试解锁的"price"单元格位于Sheet3J22:J163,并通过Sheet29Sheet14。任何想法如何做到这一点?

另一个可行的选项(我更喜欢上面的答案,但如果有人知道这是可以接受的),是提示用户输入密码以解锁单元格J22:J163如果他们尝试更改J22:J163中的任何单元格。

一种解决方案是使用单元格的锁定属性。示例如下。

Dim Password as String
Dim UserPassword as String
Password = "Password"
UserPassword = InputBox("Enter Password")
If UserPassword = Password Then
ActiveSheet.Range("A1:A50").Locked = False
ActiveSheet.Protect
Else 
ActiveSheet.Range("A1:A50").Locked = True
End if

此代码的作用是将单元格 A1 到 A50 的锁定属性设置为 false,以便在工作表受到保护时仍然可以编辑这些单元格。单元格的默认状态是 锁定属性为 true,因此工作簿中的每个单元格都应不可编辑,但您选择的区域除外。但是,如果锁定的属性恰好在所需范围之外的某些单元格中设置为 false,则它们也将是可编辑的。希望这有帮助。

不是上述问题的答案,但我最终在"审阅"功能区下使用了 excel 内部"允许用户编辑范围"工具。工作正常,因此当用户更改某些单元格时,它会提示输入密码。

谢谢!

最新更新