У меня есть книга Excel, которая защищает и скрывает все рабочие листы, кроме одной до ее закрытия.На этом одном листе предполагается снять защиту листа, очистить некоторые значения ячеек, а затем заново защитить лист.
Когда я закрываю книгу с крестиком в верхнем углу, саб работает нормально.Когда я пытаюсь использовать ThisWorkbook.Close, подпункт фактически не снимает защиту листа, поэтому я получаю ошибку времени выполнения «1004», когда он пытается очистить значения ячеек.
Мне нужен метод .Close для работы с другим сценарием, который закроет книгу через некоторое время.
Перед сценарием закрытия
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Unprotect Password:=pw
For Each Worksheet In ThisWorkbook.Worksheets
Worksheet.Protect Password:=pw
If Worksheet.Name = "Control Tab" Then
With Worksheet
.Unprotect Password:=pw
.Cells(24, 4).Value = ""
.Cells(24, 5).Value = ""
.Cells(24, 6).Value = ""
.Cells(24, 7).Value = ""
.Cells(24, 8).Value = ""
.Cells(24, 9).Value = ""
.Cells(24, 10).Value = ""
.Cells(24, 11).Value = ""
.Cells(24, 12).Value = ""
.Cells(24, 13).Value = ""
.Cells(24, 14).Value = ""
.Cells(24, 15).Value = ""
.Cells(24, 16).Value = ""
.Protect Password:=pw
End With
Else
Worksheet.Visible = 0
End If
Next
ThisWorkbook.Protect Password:=pw
ThisWorkbook.Save
End Sub
Кнопка для закрытия книги(для тестирования)
Sub Button1_Click()
ThisWorkbook.Close
End Sub
Я пытался найти причину, по которой может быть разница между проблемным и ручным закрытием книги в google и stackoverflow, но не нашел понимания, почемускрипт не снимает защиту листа.Любая помощь будет принята с благодарностью.