シートの保護と解除を設定するマクロ

タイトルのマクロは、以下です。

' シートの保護と解除を設定するマクロ
Private Sub Sheet_Protect_Password()
    ' Sheet1オブジェクトに対して操作を行う
    With Sheet1
        ' パスワードを指定してシートを保護する。
        ' マクロからの変更は保護しない。
        .Protect Password:="pw", UserInterfaceOnly:=True
    
        ' デバッグのために実行を一時停止する
        ' 中断時、セルは保護されていて、編集不可。
        Stop
    
        ' セルA1に値を設定する。マクロからは編集可能。
        .Range("A1").Value = "ABC"
    
        ' パスワードを指定してシートの保護を解除する
        .Unprotect "pw"
    End With
End Sub

詳細な説明

  1. With Sheet1
    • Sheet1 オブジェクトに対して複数の操作をまとめて行います。With...End With 構文は、指定されたオブジェクトに対して連続してプロパティやメソッドを適用する際に便利です。
  2. .Protect Password:="pw", UserInterfaceOnly:=True
    • この行は、シートをパスワード “pw” で保護します。
    • UserInterfaceOnly:=True は、ユーザーインターフェイス(UI)からの変更のみを保護し、マクロによる変更を許可するオプションです。このオプションにより、マクロを使ってシートの内容を変更することができますが、ユーザーが手動でシートを編集することはできません。
  3. Stop
    • Stop ステートメントは、デバッグのためにマクロの実行を一時停止します。コードがこの行に到達すると、実行が停止し、ユーザーはVBAエディタでデバッグモードに入ります。
    • この時点で、シートは保護されており、セルの編集はできません。
  4. .Range("A1").Value = "ABC"
    • シートのセル A1 に “ABC” という値を設定します。
    • UserInterfaceOnly:=True オプションが設定されているため、マクロからはシートが保護されていてもセルの値を変更することができます。
  5. .Unprotect "pw"
    • パスワード “pw” を使用してシートの保護を解除します。
    • この行により、シートの保護が解除され、ユーザーが手動でシートを編集できるようになります。

シート保護の詳細

  • Protect メソッド
    • Protect メソッドは、シートを保護し、ユーザーの操作を制限します。パスワードを指定することで、特定のパスワードを知っている人のみがシートの保護を解除できます。
    • UserInterfaceOnly オプションを True に設定することで、ユーザーが手動でシートを編集することを防ぎながら、マクロからはシートの編集を許可することができます。
  • Unprotect メソッド
    • Unprotect メソッドは、シートの保護を解除します。保護を解除するには、設定されたパスワードを指定する必要があります。

このマクロは、特定のパスワードを使用してシートの保護と解除を行う方法を示しており、シートの内容を保護しつつ、マクロによる編集を可能にする便利なテクニックを紹介しています。

Follow me!