Прошу помочь с написанием макроса.
Первый макрос необходим для защита листа полностью, а второй макрос для скрытия или открытия строк.
Второй макрос без защиты работает хорошо, но когда ставлю защиту, то второй макрос выдает ошибку "Run-time error 1004".
Подскажите, как нужно доработать второй макрос.
Макрос 1:
Private Sub Auto_Open()
ActiveSheet.Protect Password:="1234"
End Sub
Макрос 2
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Rows("28:44").EntireRow.Hidden = False
For Each c In Range("W28:W44")
If c = 0 Then
c.EntireRow.Hidden = True
End If
Next
Rows("45:49").EntireRow.Hidden = False
For Each c In Range("D45:D49")
If c = 0 Then
c.EntireRow.Hidden = True
End If
Next
Rows("51:54").EntireRow.Hidden = False
For Each c In Range("AE51:AE54")
If c = 0 Then
c.EntireRow.Hidden = True
End If
Next
Rows("84:86").EntireRow.Hidden = False
For Each c In Range("B84:B86")
If c = " " Then
c.EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub
Может быть так решится проблема. У метода "Protect" есть возможность ставить защиту только от юзера, а макрос может работать с листом. Но нужно учитывать, что в таком режиме не все действия можно сделать. Какие действия нельзя сделать, нужно смотреть опытным путём.
Если для ваших действий этого недостаточно, то тогда макрос в начале своей работы должен снять защиту листа, а после действий снова установить.
Private Sub Workbook_Open()
ActiveSheet.Protect Password:="1234", UserInterfaceOnly:=True
End Sub
Примечание
Событие "Auto_Open" старое и кажется сейчас не используется, вместо него используется "Workbook_Open", которое нужно поместить в модуль книги.