I was reviewing someone's workbook the other day way I saw some code similar to this:
Sheets("Sheet1").Unprotect Password:="MeatFace"
PROCEDURE
Sheets("Sheet1).Protect Password:=" MeatFace "
This code unprotects the sheet, runs a procedure, and then protects the sheet again. The reason this guy wrapped his procedure with Unprotect/Protect is because his procedure changes a worksheet in some way. And you cannot run a macro that changes a worksheet while that worksheet is protected.

