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

2 ответа2

0

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

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

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

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

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

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .