
シートが保護されていたら確認メッセージを表示する

シートの保護するVBAコードを実行したらエラーになった経験ありませんか?
それはすでにシートの保護状態なのに実行したからです。
このようにマクロエラーを防ぐ方法として利用しませんか?
ここでは、エクセルファイルを開くと自動的にシートの保護を設定していることをメッセージで知らせて、保護されていない場合は指定セルのみ部分的に保護解除して、パスワード付きのシート保護を設定するようにVBAコードを書きます。
ProtectContentsでシートの保護状態を確認
シートの現在の状態が、シートの保護設定状態なのか解除状態なのかを把握する必要がありますので、ProtectContentsプロパティを使います。
If ActiveSheet.ProtectContents Then
この1行で、「もし表示中のシートが保護状態だったら」となりますね。
続けて保護状態ならば、「保護設定状態です」とメッセージを表示して保護状態確認プログラムをいったん終了(End If)します。
If ActiveSheet.ProtectContents Then
MsgBox “保護設定状態です”
Exit Sub
次に、保護設定状態でない(End If)場合(解除状態)には、シートの保護状態になってもセルの入力が可能にできる範囲を指定します。
End If
Range(“A1:C3”).Locked = False
これで、セルA1~C3の範囲がシートの保護設定(Locked)になっても解除状態(False)に指定しました。
そして最後にパスワード(1234)設定してシートを保護します。
ActiveSheet.Protect Password = “1234”
最後にエクセルファイルを開くと自動的にプログラムを実行させるために、This WorkBookに記載し、sheet1のセルA1を選択してから実行させると以下のようになり完成します。
Private Sub Workbook_Open()
Sheets(“sheet1”).Select
Range(“A1”).Select
If ActiveSheet.ProtectContents Then
MsgBox “保護設定状態です”
Exit Sub
End If
Range(“A1:C3”).Locked = False
ActiveSheet.Protect Password = “1234”
End Sub