シートの保護
VBAを使ってエクセルシートの保護をする方法とその解除方法です。
エクセル上だと[リボン]→[校閲]→[シートの保護]→・・・と同じ動作を再現します。
メソッドなど
Worksheet.Protectサンプルコード(パスワード設定なし)
Sub hogo()
    'アクティブシートの保護
    ActiveSheet.Protect    
End Sub
実行結果イメージ
解説
例としてActiveSheetに対してシートの保護をする処理をしています。WoekrSheet.Protectはワークシートを保護するメソッドです。
[校閲]から[シートの保護]を選択すると出てくるオプション設定する「パスワード」や「セルの選択の許可」などのパラメータはProtectの後に記述することで指定できます。
| 名前 | 内容 | 値 | 既定値 | 
|---|---|---|---|
| Contents | シートとロックされたセルの内容の保護 | True/False | True | 
| Password | パスワード | 文字列 | |
| AllowFormattingCells | セルの書式設定 | True/False | False | 
| AllowFormattingColumns | 列の書式設定 | True/False | False | 
| AllowFormattingRows | 行の書式設定 | True/False | False | 
| AllowInsertingColumns | 列の挿入 | True/False | False | 
| AllowInsertingRows | 行の挿入 | True/False | False | 
| AllowInsertingHyperlinks | ハイパーリンクの挿入 | True/False | False | 
| AllowDeletingColumns | 列の削除 | True/False | False | 
| AllowDeletingRows | 行の削除 | True/False | False | 
| AllowSorting | 並び替え | True/False | False | 
| AllowFiltering | オートフィルタの使用 | True/False | False | 
| AllowUsingPivotTables | ピボットテーブル レポートを使用する | True/False | False | 
| DrawingObjects | オブジェクトの編集 | True/False | True | 
| Scenarios | シナリオの編集 | True/False | True | 
| UserInterfaceOnly | 画面上からの変更保護 | True/False | False | 
Contentsの動きがいまいちよくわかりませんがFalseにするとロックしたセルも編集できました。(オブジェクトとグラフは編集不可のままっぽい)
サンプルコード(パスワード設定など)
Sub hogo()
    'アクティブシートの保護(パスワード指定、並び替え許可)
    ActiveSheet.Protect Password:="123", AllowSorting:=True
End Sub
シートの保護の解除
メソッドなど
Worksheet.Protectサンプルコード(パスワード設定なし)
Sub hogokaijo()
    'アクティブシートの保護解除
    ActiveSheet.Unprotect
End Sub
パスワード設定がある場合は引数Passwordに指定します。
    ActiveSheet.Unprotect Password:="123"
関連・類似ページ
ブックの共有化ブックの保存
警告や確認メッセージを非表示にする