2016-04-21 2 views
0

Я сделал файл Excel, в котором операторы из производственной компании могут регистрировать сбои/сбои или что-либо, что останавливает производство. Способ, которым оператор регистрирует неисправность, - это щелкнуть по кнопке на одном листе, которая открывает пользовательскую форму, созданную с помощью VBA в Excel.excel инициализировать «защищать/снимать защиту листа» с помощью пользовательской формы

Оператор заполняет все необходимые поля с помощью выпадающих меню (имя оператора, команда, тип неисправности, имя машины и т. Д.). Когда оператор будет закончен, он или она могут нажать кнопку сохранения, которая будет записывать все данные на другой лист стандартным образом, поэтому она будет готова для визуализации данных.

Проблема

Некоторые операторы не используют UserForm для регистрации неисправности, но ввести непосредственно в техпаспорте, что противоречит протоколирование неисправностей в стандартизированной форме. Простое скрытие листа или установка пароля на него не является опцией, так как операторы также должны видеть все зарегистрированные сбои других.

Возможное решение

Я думал и единственным решением для решения этой проблемы, чтобы сделать данные-лист неизменяемые. Но проблема, которая возникает тогда, заключается в том, что пользовательская форма также не может помещать данные в лист. Поэтому я считаю, что лучший способ решить эту проблему - это постоянно загружать информацию на листе, но когда пользовательская форма открывается, лист не защищен (поэтому он может сохранять данные на листе) и когда пользовательская форма закрыта он будет снова прочитан. Не стесняйтесь спрашивать, что вам нужно.

Заранее спасибо.

ответ

0

Метод Worksheet.Protect позволяет отключить пользователя от изменения данных на листе. установить UserInterFaceOnly в True:

Worksheet.Protect Пароль: = «randompass» UserInterfaceOnly: = True

Затем код может изменить данные, но пользователь не может

+0

Так где же я положил это? в коде vba позади пользовательской формы? (Private Sub UserForm_Initialize()) – Mike

+0

Хорошо, ваш код не совсем сработал, но мне удалось его решить, основываясь на том, что вы сказали: Я поставил защиту на листе, которая должна была быть только для чтения, и поставить Blad1.Unprotect pwd и Blad1.protect pwd в кнопке сохранения. – Mike

+0

Это лучше всего подходит в workbook_open, поэтому, когда вы открываете свою книгу, лист мгновенно защищается – gizlmo

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