小技集

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ



2025年5月23日【ID:0】

メンバー限定

【ExcelVBA】入力後のセルを自動で編集不可にする

※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。


「入力後のセルを誤って上書きしてしまった…」そんな経験はありませんか?
今回は、一度入力したセルを自動で編集不可にする仕組みの開発方法について解説していきます。

※こちらで実現したファイルは記事の最後にて配布しています。


1. はじめに

Excelでデータを入力した後、うっかり編集されることを防ぐ方法として、セルを自動で編集不可にする仕組みが有効です。
特に業務で扱うシートでは、入力後のデータを守る必要がある場合が多いです。今回紹介する方法を使えば、誤って編集されることなく、データの整合性を保つことができます。

ExcelVBAレベル確認

2. シート側の設定

まずは、入力を許可するセルを選択し、そのセルのロック設定を解除します。
これにより、シートを保護した際に、ロックが解除されたセルのみ編集可能になります。

こちらでは、以下のシートのB列にある「受付済みID」を入力する項目に対して設定していきます。

まずは、B列全体を選択し、Ctrlキーを押しながらセルB1~B6を選択することで、一部の選択を解除します。

次に、選択範囲内で右クリックし、「セルの書式設定」を選択します。

書式設定の画面の[保護]タブを選択し、ロックのチェックを解除します。

以上で、シートの設定は完了です。
この設定を行うことで、シートを保護した際に、ロックを解除したセルだけが編集可能になります。


3. 開発準備

次に、Excel VBAを使って、セルに値を入力した後、そのセルが自動的に編集不可になるように設定します。

このように、特定のシート内の特定のセルが編集された時に処理を実行する仕組みを実現するには、「シートモジュール」を使用します。

シートモジュールは、該当するシートのタブ上で右クリックし、[コードの表示]を選択することで表示することができます。

選択すると、以下のエディタ画面(VBE)が表示されます。
また、該当するシートのシートモジュールが表示された状態になります。
「Option Explicit」は、VBEの設定内容次第では表示されません。「Option Explicit」についての解説はこちらでは省略します。

次に、該当するシートのセルに値を入力すると同時に処理が実行される特殊なプロシージャ(イベントプロシージャ)を用意する必要があります。
そのためには、シートモジュールの左上のリストから「Worksheet」を選択します。

「Worksheet」を選択すると、自動で「Worksheet_SelectionChange」というプロシージャが表示されます。
このプロシージャは、該当するシート上のいずれかのセルが選択されると同時に処理が実行されるイベントプロシージャになります。

ただ、今回使用するイベントプロシージャは、セルに値を入力すると同時に処理が実行されるものになります。
そのため、右上のリストから「Change」を選択します。

表示された「Worksheet_Change」というプロシージャを活用します。
「Worksheet_SelectionChange」というプロシージャに関しては削除して問題ないです。

ExcelVBAレベル確認

4. コードの記述

以下のコードを記述します。


続きはIT予備メンバー限定です。

メンバー限定コンテンツになります。




IT予備メンバーページと連携することで内容を確認することができます。

メンバーとは


すでにメンバーの方は、
ログインして連携してから、こちらを更新すると閲覧できます。
※連携しても確認ができない場合は、少し時間を置いてご確認ください。

ログイン(新しいタブ)
※[ログイン]→[設定]→[IT予備-連携]で連携できます


パソコンで開く場合は、記事の最後に「リンクコピー」があるためご活用ください。

※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。


メンバー募集 メンバー募集





リンクの共有はこちらから行えます。

  リンクコピー    X Facebook はてなブックマーク Pocket
トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ


- 人気の記事 -



- メンバー限定 [一覧] -



サイト累計閲覧数

7150099

有料動画講座
(買い切り)

Excel完全制覇


ちょっとした機能 便利ツール
【小技集】

【Excel】単位をセルの端に表示する

【ExcelVBA】表の先頭にデータを追加する機能(ノーコード)

【ExcelVBA】選択データの全項目を一括表示

【Excel】英単語のスペルチェック機能

【Excel】SORTBY関数で項目を好みの順番にする

【Excel】テスト用の数値データを瞬時に入力

【Excel】数式などでシートを切り替えずに別シートを参照!?

【Excel】数式の参照元(先)のセルを瞬時に選択

【Excel】フィルターの設定を保存する

【Excel】出社時刻と退社時刻から勤務時間を求める

【Excel】グラフのラベルテキストを改行する

【Word】指定した範囲内を全角文字に統一

【Excel】指定した値以外のデータを瞬時に削除

【Excel】基準日から「年・月・曜日・月末」などを求める

【Excel】複数行のデータを瞬時に1列にする方法

【Excel】「=」と「EXACT関数」の違いとは

【Excel】海外資料を数式でサクッと翻訳

【Excel】VLOOKUP関数で効率的に抽出

【Excel】更新箇所を自動で色付け

【Excel】リンク付きの目次を簡単に作成

【Excel・Googleスプレッドシート】マウスで横方向へスクロール

【Excel】REPLACE関数とSUBSTITUTE関数の使い分け

【Excel】該当する氏名をカンマ区切りで抽出

【Excel】特定の項目が重複しているデータを削除

【Excel】ピボットテーブルで詳細確認





一覧ページへ

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ

メンバーに加入すると多くの特典が得られます

各プラン特典一覧 各プラン特典一覧

 加入ページへ 
⚠️今が最安値です⚠️

※メンバーページと連携すると表示されなくなります