我使用vba代码保护了工作簿。我还想让用户在特定单元格(n4, p7:p10)
中输入一些值。
我尝试使用以下代码,但它不起作用。弹出错误消息提到"Error 1004"
。
Range ("n4,p7:p10").select
Selection.locked=false
答案 0 :(得分:2)
Const wsPass As String = "Password123" '//Change to your password
For Each ws In ThisWorkbook.Sheets
ws.Unprotect wsPass
ws.Range("N4, P7:P10").Cells.Locked = False
ws.Protect wsPass
Next ws
再说一遍 - 您可以保护VBA中的工作表以将其锁定用户,但仍允许使用用户界面选项进行编程访问(例如使用宏):
Sheets("RandomWorksheet").Protect Password:="Password123", UserInterfaceOnly:=True
这将取消任何" unprotect"宏,因为您的代码仍可以无阻碍地运行。
答案 1 :(得分:0)
如果工作表受到保护,您可以在代码中取消保护。这就是我通常使用的。
Dim protect As Boolean
protect = False
If ActiveSheet.ProtectContents Then
protect = True
ActiveSheet.Unprotect Password:="password"
End If
Range ("n4,p7:p10").select
'Selection.locked=false
If Not (ActiveSheet.ProtectContents) And protect = True Then
ActiveSheet.protect Password:="password"
End If
只需确保将password
更改为密码