受保护工作表中的VBA编辑单元格

时间:2015-02-13 12:28:28

标签: vba

我使用vba代码保护了工作簿。我还想让用户在特定单元格(n4, p7:p10)中输入一些值。

我尝试使用以下代码,但它不起作用。弹出错误消息提到"Error 1004"

Range ("n4,p7:p10").select
Selection.locked=false

2 个答案:

答案 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更改为密码