2015-02-13 3 views
0

Я защитил книгу, используя код vba. Я также хотел бы позволить пользователю вводить некоторые значения в конкретные ячейки (n4, p7:p10).Редактирование ячеек VBA в защищенном листе

Я пробовал использовать следующий код, но он не работает. Во всплывающем сообщении об ошибке упоминается "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», так как ваш код будет работать без помех.

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 на свой пароль

+0

Дайте мне знать, если эта работа для вас – phil652

Смежные вопросы