Excelのシート保護をUIでの操作時のみ有効にする

Excelでシートの保護をかけるとVBAでセルの非表示をした時などに、保護されているので非表示に出来ない旨のエラーになる。マウスやキー操作時のみに保護は効かせて、VBAからの操作時は保護をしない状態にしたいときは以下のようにする。以下の例のようにワークブックのオープンイベントで実行されるようにしておく。一旦、保護を解除して再度保護をかけるときにUIのみ保護を有効にするオプションを付ける。これでVBAからはセルの非表示などの操作ができるようになる。
Private Sub Workbook_Open()
  Sheet1.Unprotect
  Sheet1.Protect UserInterfaceOnly:=True
End Sub