2012-04-11 4 views
0

У меня есть инструмент excel, который собирает информацию от пользователя на основе их данных для входа. Информация хранится в ячейках на одном из рабочих листов. Если бы я хотел заблокировать эти ячейки, чтобы они не могли обновляться вручную, как я могу это сделать? Если кто-то еще войдет в систему, очевидно, эти ячейки изменились. Я надеюсь сделать это через VBA.excel vba - разрешить только редактирование ячеек через код

Я только хочу, чтобы заблокировать 6 ячеек ... все остальное должно быть редактируемым ...

Благодаря

+1

Почему бы просто не защитить рабочий лист? –

ответ

3

Вы можете защитить лист с паролем, как это:

Private Sub Workbook_Open() 
    Sheets("sheetName").Protect Password:="YourPassword", UserInterfaceOnly:=True 
End Sub 

Это не позволит пользователям вручную вносить изменения в рабочий лист без ввода пароля. Ваш код VBA по-прежнему сможет вносить изменения, поскольку вы установили UserInterfaceOnly в True.

Обратите внимание, что пользователи могут легко просмотреть этот пароль, перейдя к коду через редактор Visual Basic. Вы также можете защитить паролем код: просто щелкните правой кнопкой мыши по модулю, нажмите «Свойства VBAProject» и перейдите на вкладку «Защита».

См. Эту страницу для получения дополнительной информации: Excel VBA: Macro Code To Run Macros On Protected Worksheets & Sheets.

0

Если эти клетки являются единственными на лист, который вы хотите защитить, а затем просто изменить свойство клеток оставшихся клеток, изменяя Locked свойство ложного и оставить клетки в вопросе, как Locked затем защитить лист, используя UserInterfaceOnly набор к true (но поймите, что это не работает для всех возможных макро-изменений, поэтому я обычно избегаю этого.)

Есть и другие методы, которые могли бы работать, но я думаю, что это лучшее решение для вас. Если нет, добавьте комментарий, чтобы сообщить мне.

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