Следуя приведенному здесь запросу: Проверка орфографии VBA Excel для защищенной книги
Я бы хотел, чтобы моя книга была защищена в том же виде, в каком она была в начале.
В основном большинство моих листов защищены от строки 1 до 5.
Он был помечен как Private_Sub для каждого листа в отдельности следующим образом:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const pw As String = "Secret"
Dim rFormulaCheck As Range
On Error Resume Next
With Target
.Parent.Unprotect pw
.Locked = False
.FormulaHidden = False
If .Cells.Count = 1 Then
If .HasFormula Then
.Locked = True
.FormulaHidden = True
.Parent.Protect pw, , , , 1
End If
ElseIf .Count > 1 And .Count < 5 Then
With .SpecialCells(xlCellTypeFormulas)
.Locked = True
.FormulaHidden = True
.Parent.Protect pw, , , , 1
End With
End If
End With
On Error GoTo 0
End Sub
Как видите, пароль был установлен как «Секретный», и он охватывает только первые 5 строк.
С точки зрения проверки орфографии я должен разблокировать их, как показано ниже:
Sub Spellcheck()
For Each sh In Worksheets
sh.Unprotect "Secret"
sh.CheckSpelling
sh.Protect "Secret"
Next sh
End Sub
Однако , когда я использую sh.Protect "Secret"
. Я не могу изменить ни одну ячейку по всему документу. Это выражается ошибкой: Ячейка или диаграмма, которую вы пытаетесь изменить, находится на защищенном листе. Чтобы внести изменения, снимите защиту листа. Вас могут попросить ввести пароль.
До сих пор так эффективно я должен отключить sh. Защитить «Секрет», если я хочу сделать свой документ редактируемым. К сожалению, Private Sub Worksheet_SelectionChange(ByVal Target As Range)
больше не работает.
Есть ли шанс вернуть эти настройки защиты на начальную стадию после проверки орфографии?
ОБНОВЛЕНИЕ:
Я пытался сделать что-то вроде этого:
Sub Spellcheck()
For Each sh In Worksheets
sh.Unprotect "Secret"
sh.CheckSpelling
'sh.Protect "Secret"
Next sh
Call Worksheet_SelectionChange
End Sub
Но теперь я получаю ошибку: Sub или функция не определена.
Это не определено в модуле, но определено в большинстве листов.