40歳からExcelに挑戦!

Excel VBA シートの保護と保護解除


こんばんは。雪ん子です。
お越しいただきありがとうございます。

このブログはExcelやAccessの備忘録です。

初心者なので、変なコードとか出てくるかもしれません( ノД`)
もっと良い方法があったら、どしどしコメント下さいね。

f:id:snow0303:20190311203407j:plain
 

シートの保護解除/保護

保護されているシートを操作するマクロを実行しようとすると、
「保護されているからできません!」
とエラーが出てしまう時の対処法。

まずは最初にシートの保護を解除

ActiveSheet.Unprotect 'シート保護解除

色々な操作が終了したところで

  • ロックされたセル範囲の選択
  • ロックされていないセル範囲の選択

ができる状態にして保護します。

ActiveSheet.Protect  'シート保護

または

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'シート保護


しかし、上記の保護方法では並び替えなどができなくなってしまいます。

特にテーブルなどが入っているシートでは不便。

そんな時は、

  • ロックされたセル範囲の選択
  • ロックされていないセル範囲の選択

の他に

  • 並べ替え
  • オートフィルターの使用

 
ができるように後ろに条件を付け加えればOKです。

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
    , AllowSorting:=True, AllowFiltering:=True 'シート保護

※ AllowSorting:=True 並べ替え可
※ AllowFiltering:=True オートフィルター可