#excel #vba
#excel #vba
Вопрос:
Я пытаюсь использовать некоторый базовый код, чтобы заблокировать все мои ячейки с формулами паролем.
Я пытался рассмотреть различные решения этой проблемы, но, похоже, ни одно из них не затрагивает конкретно общую проблему и скорее касается очень специфических проблем. Выделенная строка — excel — это самая первая показанная строка.
Sub ProtectFormulas()
Dim strPassword As String
With ActiveSheet
.Unprotect
.Cells.Locked = False
.Cells.SpecialCells(xlCellTypeFormulas).Locked = True
.Protect AllowDeletingRows:=True
strPassword = InputBox(“Please enter the password (optional)”
ActiveSheet.Protect Password:=strPassword
End With
End Sub
Я ожидаю, что появится диалоговое окно, чтобы я мог ввести пароль для блокировки всех формул, но я немедленно получаю сообщение об ошибке.
Комментарии:
1. Чтобы было ясно, вы получаете сообщение об ошибке
Dim strPassword As String
? Какую ошибку вы получаете?2.
strPassword = InputBox(“Please enter the password (optional)”
не имеет закрывающей круглой скобки для поля ввода.3. Кроме того, убедитесь, что вы НЕ используете открывающие / закрывающие двойные кавычки в строке. Просто используйте простую двойную кавычку:
strPassword = InputBox("Please enter the password (optional)"
4. (@PeterT — не забудьте закрывающую скобку.) Также примечание к OP — если это необязательно, я думаю , если пользователь введет «Отмена» или просто нажмет «Ввод» в поле ввода, не получит ли он технически пароль, это будет просто пустое место? Может потребоваться добавить элемент управления like ,
If strPassword <> "" Then ActiveSheet.Protect Password=strPassword
.5. @BruceWayne пустая строка — это единственный пароль, который я когда-либо использовал для защиты рабочих листов =) … все остальное в любом случае будет сорвано через несколько секунд, если это не просто жестко запрограммировано прямо в коде VBA.
Ответ №1:
Когда я запускаю ваш код, я увидел, что в коде нет проблем, если в вашей таблице activesheet есть формула, содержащая ячейку. Убедитесь, что есть хотя бы одна ячейка, содержащая формулу. чтобы пропустить эту ошибку, используйте приведенный ниже код в первой строке вашего подраздела, чтобы вы никогда не столкнулись с ошибкой, если в вашей таблице activesheet нет ни одной ячейки, содержащей формулу. on error resume next
Комментарии:
1. Я настоятельно рекомендую не добавлять резюме рядом с верхней строкой. Это скроет ошибки и, вероятно, приведет к большему количеству головных болей, чем «решает».