添加提示密码以解锁特定单元格的第三个形状
目前,我正在使用两个形状(一个标题为“锁”,另一个“解锁”)来解锁/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:J163
和Sheet14
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密码。
谢谢!