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

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

macroslocking:

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 

macros解锁:

 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 

我的问题是 我怎样才能添加第三和第四个形状,提示密码locking/解锁几张纸上的特定单元格? 目标是保持所有的locking状态,除了具有“价格”的单元格之外,如果用户知道密码,用户可以更改它们。

我试图解锁的' price '单元格位于Sheet3上的J22:J163Sheet14 Sheet29 。 任何想法如何做到这一点?

另一个可行的select(我更喜欢上面的回答,但如果有人知道这是可以接受的),如果用户被提示input密码来解锁单元格J22:J163如果他们试图更改J22:J163任何单元格。

一个解决scheme是使用单元格的locking属性。 一个例子如下。

 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的locking属性设置为false,以便当表单受到保护时,这些单元格仍然可以编辑。 单元格的默认状态是locking属性为true,因此除了您select的范围外,工作簿中的每个单元格都应该是不可编辑的。 但是,如果locking的属性碰巧在您想要的范围之外的某些单元格中设置为false,那么它们也将是可编辑的。 希望这可以帮助。

不是上述的答案,但我最终使用审查function区内的Excel内部“允许用户编辑范围”工具。 工作得很好,所以当用户去更改某些单元格时,它会提示input密码。

谢谢!