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

Присутствует таблица с его прошлыми данными. Ему разрешено обновлять или изменять большинство своих данных в таблице. Он обновляет определенные ячейки, затем сохраняет и закрывает книгу. процесс закрытия ВБ, блокирует его лист. Прежде чем уйти, он может посмотреть другие листы продаж, но не может редактировать, потому что они заблокированы.

Теперь руб. На каждом листе salespeeps определенные столбцы (одинаковые для всех peep) содержат данные, введенные администратором. Эти данные должны видеть продавцы, но не должны быть изменены.

Любые мысли о том, как защитить определенные столбцы от существующего содержимого, изменяются на незащищенном листе.

2 ответа2

0

LPChip поставил меня на правильный путь, и я благодарю вас. Процесс, который я использовал, выглядит следующим образом:

  1. на листе продавца установите значение блокировки атрибута для всего листа как ложное
  2. в таблице для этого продавца установите значение атрибута блокировки для полной таблицы как истинное
  3. Как и предполагал LPChip, мы создали пользовательский диапазон для всех столбцов, которые никто не должен редактировать. Сделал это вручную и назначил имя диапазона (LockedColumns).
  4. затем защитите лист, это начальное условие для этого листа и всех других листов продаж.

  5. Продавец входит в систему и с правильными учетными данными, попадает на его / ее лист, где в коде vba за сценой происходит следующее:

    • Выбираем таблицу и устанавливаем блокировку attr в false
    • Выбираем Range. ("LockedColumns"). Выбираем и устанавливаем атрибут attr true
    • Мы защищаем рабочий лист.

Это позволяет авторизованному торговому представителю вводить данные в ячейки, которые мы разрешаем, и предотвращает изменение данных в ячейках, в которые мы не хотим вносить изменения. Менеджер по продажам может просматривать другие вкладки продаж, но не изменять. Когда отчет о продажах выходит из системы или рабочая книга закрывается, мы фиксируем перед закрытием и в коде vba: 1. снова выберите полную таблицу, установите для атрибута блокировки значение true и затем защитите рабочую таблицу. Мы сохраняем и затем перенаправляем обратно на вкладку меню для следующего пользователя.

Я был озадачен, и LP открыл мне глаза. Еще раз спасибо.

0

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

Что вам нужно сделать, это выбрать все продажи, которые разрешены для редактирования, и создать для них собственный диапазон. У меня нет под рукой Excel, но я считаю, что это « Data > « Define Custom Range В том же месте вы можете выбрать диапазон, который автоматически выберет ячейки в Excel.

В качестве альтернативы работе с настраиваемыми диапазонами вы можете выбрать необходимые столбцы, учитывая, что данные администратора не находятся в одном столбце. Это позволило бы activesheet.range("K:L").select .

В коде VBA после разблокировки листа он должен выбрать этот диапазон и изменить locked настройки для этих ячеек, а затем снова защитить лист. Обратное должно быть сделано при выходе (снять защиту, установить все заблокировано, защитить).

Чтобы узнать правильный код VBA, выполните действие вручную во время записи в макрос и скопируйте код.

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