Разблокировка редактирования диапазонов в Excel с помощью VBA

335
Jeff

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

0
Я не знаю точно, как выглядит ваш лист, но работает ли он, если ячейки, в которые пользователь должен вводить данные, разблокированы (Ячейки -> Формат -> Формат ячеек -> Защита)? Пользователь вводит пароль для блокировки или разблокировки листа? Вы можете передать пароль в качестве аргумента в функцию vba, поэтому пользователю не нужно вводить его каждый раз. Thales 5 лет назад 0
Я передаю пароль в качестве аргумента в функции vba, чтобы защитить / снять защиту листа. Однако я также иду в «Просмотр»> «Защитить»> «Разрешить редактирование диапазонов» и разрешаю редактировать диапазон для конкретного пользователя. Я делаю это потому, что хочу, чтобы только некоторые пользователи могли редактировать определенные ячейки. Проблема в том, что при запуске функции vba она вводит пароль, чтобы разблокировать лист, затем вводит пароль снова, чтобы заблокировать лист, а затем пользователь должен снова ввести свой пароль, чтобы редактировать диапазон, который ему разрешено редактировать. Jeff 5 лет назад 0
@Джефф, почему бы тебе не отредактировать OP и не включить код VBA, который ты используешь для блокировки / разблокировки листа. А лучше отредактируйте пост и включите, что ваша идея - позволить определенному пользователю редактировать определенный диапазон данных !! Rajesh S 5 лет назад 0

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

0
user2800

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

'Protect worksheet with a password Sheets("Sheet1").Protect Password:="myPassword"  'Unprotect a worksheet with a password Sheets("Sheet1").Unprotect Password:="myPassword" 

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

https://stackoverflow.com/questions/11981410/unprotect-sheet-with-password-without-exposing-password-in-the-macro

РЕДАКТИРОВАТЬ: на основе вашего комментария выше, это может помочь нам увидеть ваш код, а затем мы можем выяснить, где имеет смысл обрабатывать пароль.

0
Rajesh S

Я могу предложить вам два возможных метода, которые позволят определенному пользователю редактировать указанный диапазон данных.

Метод 1 (VBA Macro):

Private Sub Workbook_Open()  Dim winUser As String  winUser = Environ("username")  If winUser = "Admin" Then  Range("A1:I100").Select ActiveSheet.Protection.AllowEditRanges.Add Title:="AdminRange", Range:=Range( _ "A1:I100"), Password:="123" End If  If winUser = "User1" Then  Range("A200:I400").Select ActiveSheet.Protection.AllowEditRanges.Add Title:="User1Range", Range:=Range( _ "A200:I400"), Password:="231" End If End Sub 

Способ 2:

  1. Нажмите « Обзор», затем нажмите « Разрешить пользователям редактировать диапазоны» .
  2. Нажмите кнопку « Создать», после чего появится диалоговое окно « Новый диапазон ».
  3. Введите имя диапазона, ссылку на ячейку (диапазон) и пароль (пароль необязательный).
  4. Нажмите Permissions, затем Add, чтобы открыть Выбор пользователей или групп
  5. Если вы не можете найти имя / группу, нажмите кнопку « Дополнительно» .
  6. Нажмите Найти сейчас .
  7. Затем нажмите « Пользователь» или «Группа» и нажмите кнопку « ОК» .
  8. После того, как имя пользователя / группы было добавлено, вы можете определить, требуется ли пароль для редактирования диапазона.
  9. Наконец закончите с ОК .

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

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