当サイトはアフィリエイト広告を利用しています。
Excelファイルに空欄のままにしたいセルや、内容を変えたくないセルがある場合、そのセルを入力禁止にするのがおすすめです。
入力禁止にしておけば、自分だけでなくほかの人がファイルを触るときも編集ミスを防げます。
そこで今回は、Excelで特定のセルだけ入力禁止にする方法をご紹介します。
Excelで特定のセルだけ入力禁止にする方法
Excelで特定のセルだけ入力禁止にする方法には、以下のようなものがあります。
- セルを保護する
- データの入力規則を設定する
- マクロを使う
方法1:セルを保護する
入力禁止にしたいだけでなく、セルの削除も禁止したい場合や、数式を非表示にしたい場合は、セルを保護する方法がおすすめです。
セルを保護するには、まず入力を許可するセルのロックを解除します。セルがロックされた状態でシートを保護すると入力禁止にできるのですが、Excelではデフォルトですべてのセルにロックがかかっているので、シートを保護する前に入力を許可するセルのロックを解除する必要があります。
シートの左上の三角をクリックしてシート全体を選択し、その状態で[Ctrl]を押しながら入力禁止にしたいセルをクリックします。これでシート全体から入力禁止セルだけ除外できます。入力を許可するセルが少ない場合は、[Ctrl]を押しながら入力を許可するセルを一つずつ選択すればOKです。

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

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

「シートの保護」が表示されたら、シートの保護を解除するときのパスワードを入力⇒許可する操作にチェック⇒「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
=保護解除時に使用するパスワードなので、状況に応じて変更してください。

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

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

=AND(CELL("protect",選択範囲の左上のセル)=1,ISProtected())
たとえば、A1:B6を選択した場合は=AND(CELL("protect",A1)=1,ISProtected())
となります。
「セルの書式設定」が表示されたら「塗りつぶし」タブを開き、セル保護時のセルの色(グレー)を選択して「OK」をクリックします。

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

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

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

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

Excelで特定のセルに直接入力できないようにする方法
「入力自体は可能にしたいけど、直接入力はできないようにしたい」という場合は、ドロップダウンリストやラジオボタン、チェックボックスで入力内容を選べるようにすると良いでしょう。
Excelで選択肢から選べるようにする方法は、以下の記事で詳しく解説しています。
まとめ
今回は、Excelで特定のセルだけ入力禁止にする方法をご紹介しました。
特定のセルだけ入力禁止にしたい場合、一番おすすめなのはセルを保護する方法です。空欄のままにしたい場合はデータの入力規則を設定する方法もありますが、貼り付けによる入力を防ぐことはできないので注意しましょう。別のセルの値に応じて保護したい場合は、マクロを使うと良いですよ。
Udemyでは、買い切りの動画講座で好きな分野について自分のペースで学ぶことができます。
パソコンだけでなくスマホにも対応しているので、移動時間や休憩時間にスマホで学習することも可能です。
30日間の返金保証付きなので、初めてでも安心して受講できますよ。
▼ おすすめのExcel VBA講座はこちら ▼