Здравствуйте, уважаемые форумчане! Помогите, пожалуйста, в решении следующей задачи. Есть Книга содержащая 12 Листов. Названия Листов соответствуют месяцам года (Январь, Февраль и т. д.). В настоящий момент при открытии Книги с помощью Макроса ставиться защита на ВСЕ Листы.
Код
Private Sub Workbook_Open()
Dim wsSh As Object
For Each wsSh In Me.Sheets
Protect_for_User_Non_for_VBA wsSh
Next wsSh
End Sub
Sub Protect_for_User_Non_for_VBA(wsSh As Worksheet)
wsSh.Protect Password:="123", UserInterfaceOnly:=True
End Sub
С помощью другого макроса снимаю защиту с нужного мне Листа и работаю с ним, каждый день процедура повторяется ...
Код
Sub Разблокировка()
ActiveSheet.Unprotect Password:="123"
MsgBox ("Защита снята!!!")
End Sub
Вопрос в следующем - возможно ли снятие защиты Листа "привязать" к календарю? Например, сейчас Февраль и при открытии Книги Лист "Февраль" будет без защиты. Послезавтра начинается Март и уже без защиты будет Лист "Март", а Лист "Февраль" становится защищённым. Заранее благодарен за ответ.
После того, как установили защиту на все листы - определяете лист и снимаете с него защиту:
Код
Dim sShName$
Select Case Month(Date)
Case 1:
sShName = "Январь"
Case 2:
sShName = "Февраль"
Case 3:
sShName = "Март"
'и т.д.
'Case ...:
'sShName = "..."
End Select
ThisWorkbook.Sheets(sShName).Unprotect
Можно, конечно, и сократить и в отдельной функции определять название месяцев и много чего еще придумать. Но мне сейчас лениво - показал основной принцип определения листа с именем месяца в зависимости от текущей даты. Можно так же и еще на стадии установки защиты на листы определять нужный и на него просто не ставить защиту или снимать сразу в том же цикле, проверяя имя листа.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...