この記事では、エクセルで特定のセルの直接入力禁止・ロック(範囲指定:編集できないようにする)方法について解説していきます。
主な対応方法は以下です。
セルのロックとシート保護
データの入力規則を使用
VBAでセルをロックする
それではサンプルを見ていきましょう。
エクセルで特定・指定のセルの直接入力禁止する方法1
セルのロックとシート保護はエクセルに搭載されている機能で、セルの書式設定と校閲タブを使います。
特定セルを含んだシート全体を保護したいケース
どこでもいいので適当なセルを選択して、セルの書式設定を確認しましょう。
保護タブのロックのチェックボックスがONになっていることを確認します。
デフォルトではすべてのセルがONになっています。
この状態で校閲タブのシートの保護をクリックして、以下のチェックがついた状態でOKを押しましょう。
必要であればパスワードの設定をしましょう。解除の時に必要になります。
OKを押すと指定のセルを含んだシート全体が編集不可になります。
特定のセルだけをロック・保護したいケース
特定のセルだけを編集不可にする場合は、まずCtrl+Aを押してシートすべてを選択します。
この状態で先ほどと同様にセルの書式設定を開き、今度はロックのチェックを外します。
次にロックしたいセルだけを選択して、同じくセルの書式設定からロックにチェックを入れます。
そしてシートの保護をします。こうすることで指定したセルだけがロックできます。
エクセルで特定のセルの直接入力禁止する方法2【データの入力規則の使用で指定範囲のみ】
次はデータの入力規則を使った方法です。
データの入力規則とは特定のセルに対して1~5までとか、OK・NGだけ、など指定した値しか入力できなくする設定です。
例えば以下の評価のセルに1~5までを許可する場合
整数を選択します。
最小値1と最大値5を設定します。
設定した値以外を入力しようとするとエラーになります。
これで特定・指定セルへの直接入力を禁止する設定ができました。
エクセルで特定のセルの直接入力禁止する方法3【VBA:マクロ】
ここからはVBAを使った方法なのでマクロ有効ブックにする必要があります。
まずは今開いているエクセルを「名前を付けて保存」でExcelマクロ有効ブックを選択しましょう。
この形式にすることでマクロが使えるようになります。
現在開いているエクセルで直接編集を禁止したいシートでAlt+F11を押してVBAエディタを開きます。
以下のコードを貼り付けます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range 'セル範囲を指定
Set cell = Me.Range("E3:E5")
'編集されたセルが特定のセルであれば、元の値に戻す
If Not Application.Intersect(Target, cell) Is Nothing Then
Application.EnableEvents = False
Application.Undo
MsgBox "このセルは編集できません。", vbExclamation
Application.EnableEvents = True
End If
End Sub
この例ではE3~E5を編集不可にしました。入力してみます。
エラーメッセージが出ました。
OKを押すと元の値に戻ります。
まとめ エクセルで特定・指定のセルのロック・保護(VBA:マクロも:編集できないようにする)方法
この記事ではエクセルで特定のセルの直接入力禁止・ロック(編集できないようにする)方法について解説しました。
シートの保護やデータ入力規則、VBAを使えばあらゆる状況に対応できると思います。ぜひご活用ください。