特定のセルを編集不可にする

中級VBA

はじめに

 特定のセルを編集できないようにするには、セルをロック状態にして、シートの保護をかけます。

 ただ、各セルは初期状態でロックになっていますので、
 「特定のセルを編集できないようにする」と言うよりは、
 「シート保護をかけても編集できるセルのロックを外す」と言った方が良いでしょう。
 
 ロックを外したセルは、シートの保護をかけた状態でも編集できるようになります。

セルのロックを外す方法

 シート上でセルをロックするには、ロックしたいセルを右クリックして「セルの書式設定」を選択します。
 ダイアログの「保護」タブロックという項目があるので、このチェックを外します。

 ロックを外したセルはシートの保護をかけても編集可能となります。

 次にシートの保護をかけます。シートの保護は、「校閲」から「シートの保護」。またはシートタブを右クリックして「シートの保護」で行う事ができます。

プログラムでセルのロックを操作

 以下のようなシートでB2~B6 セルのロックを外して、シートの保護をかけるてみます。

Sub testCellsLock()
    ActiveSheet.Unprotect                         'アクティブシート保護を解除
    ActiveSheet.Range("B2:B6").Locked = False     '編集したくないセルをロック解除
    ActiveSheet.Protect                           'アクティブシートを保護
End Sub

 最初にシートの保護を外しておき、次に編集可能にするセルのロックをFalseにしてロックを解除しておきます。
 最後にシート保護の状態にすれば、値を入力する B2~B6 セルのみ編集可能となります。
(網掛け部分はロック状態となります。)

 次は、合計の数式が入っている B7セルのみセルのロックをかけるようにしてみます。

Sub testCellsLock2()
    ActiveSheet.Unprotect                      'アクティブシート保護を解除
    ActiveSheet.Cells.Locked = False           '一旦全てのセルのロックを解除
    ActiveSheet.Range("B7").Locked = True      '編集不可にしたいセルをロックする
    ActiveSheet.Protect                        'アクティブシートを保護
End Sub

 このプログラムでは、合計の結果部分(B7セル)のみがロックされ、他は編集可能となります。

まとめ

 Excelでは、初期状態でセルがロック状態となっています。この状態でシートの保護を書けると全てのセルが編集不可になるという仕組みです。
 シート保護をかける前に、セルのロックを解除しておけば、そのセルは編集できるようになります。
 
 編集不可の範囲が広い方が安全であると感じるかもしれませんが、その分、警告メッセージが出現する頻度も高くなります。
 ActiveSheet.Cells.Locked = False として一旦全てのセルのロックを解除し、必要なセルのみセルのロックをかけた方が実用的かもしれません。

 尚、シートの保護についてはパスワードを付けるなど、いくつかのオプションが選択できます。
 詳しくは以下を参照してください。

シートを保護する方法

コメント

タイトルとURLをコピーしました