Office 2024がリリースされました!

Excelで特定のセルだけ入力禁止にする3つの方法

Excelで特定のセルだけ入力禁止にする3つの方法

当サイトはアフィリエイト広告を利用しています。

Excelファイルに空欄のままにしたいセルや、内容を変えたくないセルがある場合、そのセルを入力禁止にするのがおすすめです。

入力禁止にしておけば、自分だけでなくほかの人がファイルを触るときも編集ミスを防げます。

そこで今回は、Excelで特定のセルだけ入力禁止にする方法をご紹介します。

Excelで特定のセルだけ入力禁止にする方法

Excelで特定のセルだけ入力禁止にする方法には、以下のようなものがあります。

  • セルを保護する
  • データの入力規則を設定する
  • マクロを使う

方法1:セルを保護する

入力禁止にしたいだけでなく、セルの削除も禁止したい場合や、数式を非表示にしたい場合は、セルを保護する方法がおすすめです。

セルを保護するには、まず入力を許可するセルのロックを解除します。セルがロックされた状態でシートを保護すると入力禁止にできるのですが、Excelではデフォルトですべてのセルにロックがかかっているので、シートを保護する前に入力を許可するセルのロックを解除する必要があります。

シートの左上の三角をクリックしてシート全体を選択し、その状態で[Ctrl]を押しながら入力禁止にしたいセルをクリックします。これでシート全体から入力禁止セルだけ除外できます。入力を許可するセルが少ない場合は、[Ctrl]を押しながら入力を許可するセルを一つずつ選択すればOKです。

入力を許可するセルを選択する

選択が完了したら[Ctrl]+[1]を押して「セルの書式設定」を表示し、「保護」タブ⇒「ロック」のチェックを外して「OK」をクリックします。

ロックを解除する

「ホーム」タブ⇒「書式」⇒「シートの保護」をクリックします。

シートを保護する
MEMO

入力禁止セルで数式を非表示にしたい場合は、シートの保護を有効化する前に、入力禁止セルを選択して「セルの書式設定」の「保護」タブ⇒「表示しない」にチェックを付けておきましょう。

入力禁止セルを選択する
数式を表示しない

「シートの保護」が表示されたら、シートの保護を解除するときのパスワードを入力⇒許可する操作にチェック⇒「OK」をクリックします。保護したセルの選択や、保護していないセルの選択を許可する場合はデフォルトの設定のままでOKです。

シートの保護の設定をおこなう

「パスワードの確認」が表示されたら、さきほど設定したパスワードを入力して「OK」をクリックします。

パスワードを入力する

これで入力禁止セルに入力しようとすると「変更しようとしているセルやグラフは保護されているシート上にあります。変更するには、シートの保護を解除してください。パスワードの入力が必要な場合もあります」というメッセージが表示され、入力できなくなります。

セルを保護した結果

方法2:データの入力規則を設定する

セルを空欄のままにしたい場合で、セルの保護ほど厳しい制限をかけたくない場合は、データの入力規則を設定する方法がおすすめです。この方法では、セル選択時や入力したままほかのセルに移動しようとしたときにメッセージを表示することができます。ただし、貼り付けによる入力は防げません。

データの入力規則を設定するには、まず入力禁止にしたいセルを選択して「データ」タブ⇒「データの入力規則」をクリックします。

データの入力規則を設定する

「データの入力規則」が表示されたら「設定」タブを開き、入力値の種類で「ユーザー設定」を選択⇒数式にFALSEと入力します。

条件の設定をおこなう

セル選択時にメッセージを表示したい場合は、「入力時メッセージ」タブを開き、メッセージの「タイトル」「入力時メッセージ」を入力します。

セル選択時のメッセージを設定する

入力したままほかのセルに移動しようとしたときにメッセージを表示したい場合は、「エラーメッセージ」タブを開き、メッセージの「タイトル」「エラーメッセージ」を入力します。設定が完了したら「OK」をクリックしましょう。

入力したままほかのセルに移動しようとしたときのメッセージを設定する

入力時メッセージとエラーメッセージの両方を設定すると、セル選択時には入力時メッセージが表示され、入力したままほかのセルに移動しようとするとエラーメッセージが表示されます。「再試行」をクリックするとセルに戻され、「キャンセル」をクリックすると内容が削除されます。

データの入力規則を設定した結果

ただし、前述のとおり貼り付けると入力できてしまい、設定したデータの入力規則もリセットされてしまうので注意しましょう。

データの入力規則を設定したセルに値を貼り付けた結果

方法3:マクロを使う

「A列の内容に応じてB列を入力禁止にするかどうか決める」といった複雑な設定をおこないたい場合は、マクロを使う方法がおすすめです。

マクロを初めて使う方は、先に以下の記事をご覧ください。

たとえば、「Sheet1のA2以下が『×』なら同じ行のB列を保護し、『×以外』なら保護しない」という設定にしたい場合は、[Alt]+[F11]を押してVBEを起動し、Sheet1のシートモジュールに以下のコードをコピペします。

Private Sub Worksheet_Change(ByVal Target As Range)
    ' A2 以下のセルが変更されたときに実行
    If Not Intersect(Target, Me.Range("A2:A" & Me.Cells(Me.Rows.Count, "A").End(xlUp).Row)) Is Nothing Then
        ' シート保護の解除(パスワードが正しいことを確認)
        On Error Resume Next ' エラーが発生しても処理を続ける
        Me.Unprotect Password:="1234" ' シート保護のパスワード
        On Error GoTo 0 ' エラートラップを解除
        
        ' すべてのセルをロック解除しておく
        Me.Cells.Locked = False
        
        ' 対象セルをループしてB列のロック状態を変更
        Dim i As Long
        For i = 2 To Me.Cells(Me.Rows.Count, "A").End(xlUp).Row
            If Me.Cells(i, "A").Value = "×" Then
                ' A列が「×」の場合、B列は保護する
                Me.Cells(i, "B").Locked = True
            Else
                ' それ以外(空欄や「○」など)はB列を保護しない
                Me.Cells(i, "B").Locked = False
            End If
        Next i
        
        ' シートを再保護(パスワード付きで)
        Me.Protect Password:="1234", UserInterfaceOnly:=True ' UserInterfaceOnlyは、VBAコードからの編集を許可
    End If
End Sub

すると、A2以下が×ならB列が保護され、×以外なら保護されません。2=A2の「2」、A=A2の「A」、B=B列の「B」、1234=保護解除時に使用するパスワードなので、状況に応じて変更してください。

A2以下のセルが変更されたときにB列の保護状態を変更するマクロの動作確認

Excelでセルの保護を解除する方法

Excelでセルの保護を解除するには、まず「ホーム」タブ⇒「書式」⇒「シート保護の解除」をクリックします。

シートの保護を解除する

「シート保護の解除」が表示されたら、保護したときに設定したパスワードを入力して「OK」をクリックします。これでセルの保護が解除され、入力できるようになります。

パスワードを入力する

Excelで保護されたセルをグレーで塗りつぶす方法

Excelで保護されたセルをグレーで塗りつぶすには、セルが保護されているか判定する関数を作成したうえで、シート全体に条件付き書式を設定します。

まずは[Alt]+[F11]を押してVBEを起動し、標準モジュールに以下のコードをコピペします。これで、ISProtected関数という関数を使ってセルが保護されているか判定できるようになります。

Function IsProtected() As Boolean
    On Error Resume Next
    IsProtected = ActiveSheet.ProtectContents
    On Error GoTo 0
End Function

シートに戻り、保護したいセルが含まれるセル範囲を選択して「ホーム」タブ⇒「条件付き書式」⇒「新しいルール」をクリックします。

保護したいセルが含まれるセル範囲に条件付き書式を設定する
注意

シート全体を選択してしまうとISProtected関数が頻繁に呼び出されてExcelのパフォーマンスが低下してしまうため、必要な範囲だけ選択するようにしましょう。

「新しい書式ルール」が表示されたら「数式を使用して、書式設定するセルを決定」を選択し、以下のような数式を入力して「書式」をクリックします。

ルールを設定する
=AND(CELL("protect",選択範囲の左上のセル)=1,ISProtected())

たとえば、A1:B6を選択した場合は=AND(CELL("protect",A1)=1,ISProtected())となります。

「セルの書式設定」が表示されたら「塗りつぶし」タブを開き、セル保護時のセルの色(グレー)を選択して「OK」をクリックします。

セル保護時の色を設定する

「新しい書式ルール」に戻ったら「OK」をクリックします。

ルールを保存する

あとは「方法1:セルを保護する」のやり方でセルを保護します。このとき、「セルの書式設定」を許可するのがポイントです。これでセル保護時にグレーで塗りつぶす処理が許可されます。

シートを保護するときにセルの書式設定を許可する

セルの保護が完了したら、[F9]を押して画面を更新します。これで保護されたセルのみグレーで塗りつぶされます。

セルを保護して画面を更新した結果

保護を解除して[F9]を押すと、セルの塗りつぶしが元に戻ります。

保護を解除して画面を更新した結果

Excelで特定のセルに直接入力できないようにする方法

「入力自体は可能にしたいけど、直接入力はできないようにしたい」という場合は、ドロップダウンリストやラジオボタン、チェックボックスで入力内容を選べるようにすると良いでしょう。

Excelで選択肢から選べるようにする方法は、以下の記事で詳しく解説しています。

まとめ

今回は、Excelで特定のセルだけ入力禁止にする方法をご紹介しました。

特定のセルだけ入力禁止にしたい場合、一番おすすめなのはセルを保護する方法です。空欄のままにしたい場合はデータの入力規則を設定する方法もありますが、貼り付けによる入力を防ぐことはできないので注意しましょう。別のセルの値に応じて保護したい場合は、マクロを使うと良いですよ。

Udemyの動画講座なら自分のペースでExcel VBAを学べる!

Udemyでは、買い切りの動画講座で好きな分野について自分のペースで学ぶことができます。

パソコンだけでなくスマホにも対応しているので、移動時間や休憩時間にスマホで学習することも可能です。

30日間の返金保証付きなので、初めてでも安心して受講できますよ。

▼ おすすめのExcel VBA講座はこちら ▼