Разблокировка редактирования диапазонов в Excel с помощью VBA
335
Jeff
Я использую VBA для добавления информации в свою электронную таблицу всякий раз, когда данные вводятся в другой столбец. Однако для этого я разблокирую и заблокирую лист как часть скрипта vba. Это требует, чтобы пользователь повторно ввел свой пароль для редактирования следующей строки. Есть ли обходной путь для этого?
Я не знаю точно, как выглядит ваш лист, но работает ли он, если ячейки, в которые пользователь должен вводить данные, разблокированы (Ячейки -> Формат -> Формат ячеек -> Защита)? Пользователь вводит пароль для блокировки или разблокировки листа? Вы можете передать пароль в качестве аргумента в функцию 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"
Недостатком этого является то, что ваш пароль будет виден любому, кто может открыть ваш код. Таким образом, вы можете захотеть создать второй пароль для защиты вашего макрокода, если вы пойдете по этому пути. Смотрите ссылку ниже.
РЕДАКТИРОВАТЬ: на основе вашего комментария выше, это может помочь нам увидеть ваш код, а затем мы можем выяснить, где имеет смысл обрабатывать пароль.
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