Excel VBAを使ったシートの保護と保護解除のサンプルアプリの説明

VBAを使ってシート全体の保護と特定のセルに保護をかけるメリットについて説明します。
VBAを使用することで、Excelの保護機能を自動化し、作業効率を向上させることができます。
今回ご紹介するサンプルは以下の通りです。

サンプルアプリの使い方について

サンプルアプリでは、「シート全体を保護」、「平均点セルのみを保護」、「保護を解除」という3つの処理が可能です。「シート全体を保護」ボタンをクリックすると、シート全体が保護され、シート上のセルを編集できなくなります。このボタンは、シート上に配置されていると想定します。
「平均点セルのみを保護」ボタンをクリックすると、平均点が入っているセル(黄色のセル)のみに保護が設定され、編集できなくなります。他のセルは編集可能な状態を維持します。このボタンも、シート上に配置されていると想定します。
「保護を解除」ボタンをクリックすると、前述の保護設定がすべて解除され、シート上のセルが再び編集可能になります。
実行するコードの内容については、次項に掲載していますのでご覧ください。

シート全体を保護または特定のセルのみを保護するメリットとして以下のことが上げられます。
・セキュリティ強化:
 データの誤操作や意図しない変更を防ぐため、シート全体や特定のセルに保護をかけることでセキュリティを向上させることができます。
・データの保護:
 重要なデータや計算結果を保護するため、他のユーザーが誤って変更しないようにすることができます。
・入力制限:
特定のセルに保護をかけることで、他のセルに対しては編集可能な状態を維持しながら、特定のデータのみを入力可能にすることができます。
VBAを使った処理は、さまざまな業務シーンで活用されます。
例えば、データ入力や集計作業において、特定のセルのみを編集可能にし、他のセルのデータが誤って変更されないようにする場合などがあります。
また、機密性の高いデータを保護するために、シート全体に保護をかけることも一般的です。

サンプルアプリのコード   アプリの作成手順はこちら

Option Explicit

Sub ProtectSheet()

    'シートの保護を解除
    Sheets("Sheet1").Unprotect Password:="123"
    'すべてのセルの保護を設定
    Sheets("Sheet1").Cells.Locked = True
    'シートの保護を設定
    Sheets("Sheet1").Protect Password:="123"
          
End Sub


Sub LockCells()

    'Worksheetオブジェクトの変数を宣言します。この変数は特定のワークシートを表します。
    Dim ws As Worksheet
    '変数wsに、ThisWorkbook(現在のブック)の中の"Sheet1"という名前のワークシートを代入します。
    Set ws = ThisWorkbook.Sheets("Sheet1")
    'シートの保護を解除
    ws.Unprotect Password:="123"
    'すべてのセルの保護を解除
    ws.Cells.Locked = False
    'G6:G15 の範囲のみを保護
    ws.Range("G6:G15").Locked = True
    'シートの保護を設定(セルの書式設定を許可)
    ws.Protect Password:="123", AllowFormattingCells:=True
    
End Sub


Sub UnprotectSheet()

    ' シート全体の保護を解除
    Sheets("Sheet1").Unprotect Password:="123"
            
End Sub

コードの処理内容の説明

それぞれのサブルーチンの内容は以下の通りです。

・ ProtectSheet() サブルーチン:
  このサブルーチンでは、シート全体の保護が行われます。まず、シートの保護を解除し、すべてのセルの保護を設定します。最後に、シートを再び保護します。

・ LockCells() サブルーチン:
  このサブルーチンでは、特定のセルのみに保護をかける処理が行われます。
  まず、シートの保護を解除し、すべてのセルの保護を解除した後、特定の範囲(ここではG6:G15)のセルの保護を設定します。
最後に、シートを再び保護します。この保護では、セルの書式設定などは変更可能です。

・ UnprotectSheet() サブルーチン:
 このサブルーチンでは、シート全体の保護を解除します。シートの保護を解除するために、パスワードを指定します。

以上が、サンプルアプリのコードの処理内容です。各サブルーチンは、シート名やパスワードを適宜変更して使用することができます。このサンプルアプリを使用すると、ボタンをクリックすることでシート全体の保護や特定のセルの保護を行うことができます。保護を解除する場合も、専用のボタンをクリックするだけで解除されます。
ご参考までに、上記のコードは「Sheet1」というシート名を想定していますので、実際のシート名に合わせて修正してください。また、パスワードも適切なものに変更してセキュリティを確保してください。

シート全体の保護と特定のセルに保護をかける場合の注意点

シート全体の保護と特定のセルに保護をかける場合、それぞれの注意点があります。

・シート全体の保護:
シート全体に保護をかける場合、ユーザーはセルの内容を変更することができなくなります。
ただし、注意点として、保護を解除するにはパスワードが必要であることや、マクロの実行が許可されていることが必要です。

・特定のセルに保護をかける:
特定のセルに保護をかける場合、保護したいセルの範囲を指定します。この方法では、他のセルは編集可能な状態を維持しながら、特定のセルのみを保護することができます。また、保護をかけたセルの書式設定やデータの表示は変更可能です。保護を解除するにはパスワードが必要です。

以上が、VBAを使ってExcelのシート全体の保護と特定のセルに保護をかける方法と、それぞれの注意点についての説明でした。