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

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

Они пришли ко мне с просьбой, чтобы я лишил его возможности вставлять формулы в этот конкретный столбец. Проблема в том, что я не могу просто защитить электронную таблицу, потому что есть 5-6 пользователей, нуждающихся в ней 24/7. Я также пытаюсь сделать процесс более простым для пожилых сотрудников, а не более сложным. Есть ли способ, которым я могу просто запретить ввод формул в ячейках одного конкретного столбца, не требуя пароля или блокируя весь ввод данных в целом?

2 ответа2

0

Альтернативный подход, который должен удовлетворить обе стороны, состоит в добавлении макроса before_save, который просто копирует / вставляет значения столбца перед сохранением.

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


А еще лучше, превратите электронную таблицу в простое веб-приложение и раздражайте всех!
0

Вот пример для столбца D ; Вы можете адаптировать его к любому столбцу. Этот макрос событий отслеживает изменения, внесенные в столбец D. Если пользователь пытается ввести формулу в столбце D, эта запись переворачивается.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim D As Range, ints As Range
    Set D = Range("D:D")
    Set ints = Intersect(D, Target)
    If ints Is Nothing Then Exit Sub
    If ints.Count > 1 Then Exit Sub
    If ints.HasFormula Then
        Application.EnableEvents = False
            Application.Undo
        Application.EnableEvents = True
    End If
End Sub

Единственное ограничение заключается в том, что допускается изменение только одной ячейки за раз.

Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:

  1. щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
  2. выберите View Code - откроется окно VBE
  3. вставьте материал и закройте окно VBE

Если у вас есть какие-либо проблемы, сначала попробуйте на пробную версию.

Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить макрос:

  1. вызвать окна VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы узнать больше о макросах в целом, смотрите:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

а также

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Чтобы узнать больше о макросах событий (код листа), см .:

http://www.mvps.org/dmcritchie/excel/event.htm

Макросы должны быть включены, чтобы это работало!

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