For the sake of completeness, it's worth mentioning that you can have the sheets protected and still hide/unhide rows via code.
If you put the below in the ThisWorkbook module it will fire when the workbook is opened and protect each worksheet.
The 'UserInterfaceOnly:=True' part allows protected sheets to be manipulated by code but not by the user.
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.Protect Password:="EnterYourPasswordHere", UserInterfaceOnly:=True
Next ws
End Sub
It can be adapted easily to only protect certain sheets if required.
This for example will protect all sheets other than the one named 'Staff'.
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
If ws.Name <> "Staff" Then ws.Protect Password:="EnterYourPasswordHere", UserInterfaceOnly:=True
Next ws
End Sub
BSB
Bookmarks