2014-01-10 2 views
0
Private Sub Worksheet_Activate() 
ActiveSheet.Protect "RS" 
ActiveSheet.Range("B:C").Locked = False 
End Sub 

Я пытаюсь выше код, но не работает, я хочу, чтобы разблокировать только В и С столбецразблокировки колонки в защищенном листе в Excel VBA

+0

Что такое эффект приведенного выше кода? «Не работает» - это не очень четкое описание. Нет ничего заблокированного? Разве ничего не разблокировано? – Floris

ответ

4

Вы защищаете лист, прежде чем открыть диапазон. Но поскольку лист защищен, диапазон не может быть разблокирован. Поменять местами две строки, и код будет работать:

Private Sub Worksheet_Activate() 
ActiveSheet.Range("B:C").Locked = False ' unlock the cells, so they can be edited in a protected sheet 
ActiveSheet.Protect "RS" ' protect the sheet so only unlocked cells can be edited 
End Sub 
+0

Благодаря его работе –

+0

произошла ошибка времени выполнения, «включить установку заблокированного свойства класса диапазона» во время выбора листа –

+1

Ну, при первом запуске кода он блокирует лист. Вы решили поместить код в модуль активирования Worksheet. Поэтому в следующий раз, когда рабочий лист активируется (помните, он уже защищен), код пытается разблокировать некоторые ячейки, что не удастся, поскольку лист защищен. Короче говоря, вам нужно, чтобы ваша логика кода была исправлена ​​до начала кодирования. Не просто вводите код, а затем смотрите, что происходит. Сделайте план первым. Обычно это помогает. – teylyn

0
Private Sub Workbook_Activate() 

Worksheets("ObjectDescriptionMapping").Range("B:C").Locked = False ' unlock the cells, so they can be edited in a protected sheet 
Worksheets("ObjectDescriptionMapping").Protect "RS" 

End Sub 
+0

, добавив код в Workbook_Activate event –

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