VBA:全シート保護、解除の両方を一気にできるマクロ
VBAマクロとの出会いは、全シートを一括保護、解除するマクロでした。
★①どんな時に使うか
エクセルで通信簿を作っています。数式に不具合があり、シート保護を全部外して編集したいです。35枚のシートを一気に保護したり保護解除したりしたいです。1枚ずつ操作するなんて気が遠くなります。
★②マクロ(標準モジュールに貼ります)
↓
Sub 全シート一括保護と解除()
Dim Sh As Object
Application.ScreenUpdating = False
If ActiveSheet.ProtectContents = False Then
On Error Resume Next
For Each Sh In Sheets
Sh.Protect
Next Sh
ActiveSheet.Activate
MsgBox "保護しました。"
Else
On Error Resume Next
For Each Sh In Sheets
Sh.Unprotect
Next Sh
ActiveSheet.Activate
MsgBox "保護解除しました。"
End If
End Sub
★③「図形」でボタンを描き、右クリックで「マクロを登録」すると、
ボタンを押すと作動します。
5~10分くらいかかる作業が
1秒かからずできます。
シートの保護、解除は
1シートずつしかできないので
かなり有用です。
★④サンプルファイル
---------------------------------------
初めて仕事で使ったのが、
全シートの保護/解除のマクロでした。
ネットでよく紹介されているのは、
多分、保護と解除が別々だと思います。
ボタンが2つになるので、保護と解除を合体させて、処理出来たらメッセージが出るようにしてみました。
無駄な行があるかもしれませんが、
動くということでご勘弁を。
では、また