VBA excel Проверка орфографии для частично защищенной книги - PullRequest
0 голосов
/ 26 февраля 2020

Следуя приведенному здесь запросу: Проверка орфографии 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 или функция не определена.

Это не определено в модуле, но определено в большинстве листов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...