One can also do this without unprotecting and then protecting the sheet each time. There' something called UserInterfaceOnly in Excel when you protect a sheet through VBA (I haven't come across a similar feature in the Excel interface itself, and probably Microsoft has a logic also, to which I can relate to).
So to do this, you could project all the sheets, making it True for UserInterfaceOnly, and then continue with your normal codes, without having to Unprotect and Protect each time.
What I generally do (if this is required) is, in the workbook code module,
Code:
Private Sub Workbook_Open()
Dim sht As Object
For Each sht In ThisWorkbook.Sheets
sht.Unprotect "PASSWORD"
sht.Protect UserInterfaceOnly:=True, Password:="PASSWORD"
Next sht
End Sub
Or in a code module
Code:
Private Sub Auto_Open()
Dim sht As Object
For Each sht In ThisWorkbook.Sheets
sht.Unprotect "PASSWORD"
sht.Protect UserInterfaceOnly:=True, Password:="PASSWORD"
Next sht
End Sub
Now, though the sheet is protected, any manipulation of data on the protected sheet using VBA will not be hindered due to the UserInterfaceOnly:=True argument in the protection
Bookmarks