Могу ли я использовать макрос для защиты ячейки в таблице Excel с помощью пароля?

461
Paul Y

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

0
** Мое наблюдение: ** 1. Кажется, что файл находится в защищенном режиме, а макрос позади позволяет только мышке перемещаться и нажимать на кнопку. Теперь то, что вы ищете, это позволить пользователю вводить данные в ячейки и после этого должны быть защищены. Rajesh S 5 лет назад 0
** Cont ... **, Самая первая необходимость - просто поделиться макросом, который ограничивает перемещение указателя ячейки вокруг файла, чтобы помочь нам понять процесс. И да, пользователь может защитить данные после ввода. ☺ Rajesh S 5 лет назад 0

2 ответа на вопрос

0
Slartibartfast

Ваши пользователи имеют доступ для записи в файл Excel ...

Я не думаю, что вы можете технически применить это в Excel; Я думаю, что вы хотите альтернативное программное обеспечение. Я восхищаюсь твоим умением работать с макросами Excel.

Разработать:

  • Если пользователь может изменить ячейку, он не защищен от простого изменения ячейки пользователем (ввод значения).
  • Если пользователь не может изменить ячейку, он защищен от ввода пользователем значения, но он также не может заставить правильную информацию записываться в нее из макроса.

Это отличается от шифрования ячеек, что предотвращает даже чтение без пароля.

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

0
harrymc

Вы можете запретить изменения в ячейках обработчиком событий VBA:

Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False With Target If If Not Intersect(Target, Range("A1:B10")) Is Nothing Then Application.Undo End With Application.EnableEvents = True End Sub 

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

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

Похожие вопросы