マクロの守り中小企業のAI導入支援|Excelマクロ(VBA)の属人化の解消からExcelマクロ(VBA)の引き継ぎ 専門

コラムやり方・手順

Excelの数式が壊されるのを防止するには?シートの保護・テーブル・入力規則を8つの操作で試した

前任者の表を、次の人が壊さず直せる形にする記事です。Excelの数式が壊されるのを防止する基本は、数式のセルだけをロックしてシートを保護することです。ここでいう「壊れる」は、数式が上書き・削除されるか、参照がずれて違う答えを出すことです。マクロの守りがExcelで8つの操作を試すと、守りなしでは7つで数式が壊れました。シートの保護は4つ、保護とテーブルの組み合わせは5つを防いでいます。1つの方法で全部は防げず、保護すると行の追加と並べ替えができなくなります。(2026年10月時点)

読み解きから直す・置き換えるまでの流れと費用はExcelマクロの引き継ぎのページにまとめています。

要点

  • Excelで8つの操作を試すと、守りなしでは7つで数式が壊れました。壊れなかったのは並べ替えだけです。
  • シートの保護は8つのうち4つを防ぎ、行の追加と並べ替えの2つはできなくなりました。
  • テーブルは行の追加と切り取りに強く、足した行の金額も合計の19,610円に入りました。
  • 入力規則は「1O」のような打ち間違いを止めますが、Deleteキーと貼り付けは通しました。
  • 保護とテーブルを組み合わせると5つを防げますが、型の違う入力は入力規則でしか止まりません。
目次
  1. Excelの数式が壊されるのは、どの守りで防げますか?
  2. 8つの操作は、どんな表でどう試したのですか?
  3. シートの保護で防げる操作と、防げない操作は?
  4. テーブルと入力規則は、何を防ぎますか?
  5. 保護とテーブルを組み合わせると、どこまで防げますか?
  6. 引き継ぎ書には、守りの何を書きますか?
  7. このサイトで相談するには?
  8. よくある質問

Excelの数式が壊されるのは、どの守りで防げますか?

前任者が作った表を引き継ぐとき、数式の守りは引き継ぎ書に書く項目の1つです。守りがどこに掛かっているかを書かずに渡すと、後任が数式を壊したり、保護を外せず困ったりします。この記事は、その守りの効き方を試した結果です。

上書きと行の削除はシートの保護で、行を足したときの式の漏れはテーブルで、型の違う入力は入力規則で防げます。1つの方法で全部は防げません。8つの操作を、守りなしと4つの守りで試した結果は次のとおりです。

操作 守りなし シートの保護 テーブル 入力規則 保護+テーブル
金額のセルに数字を打って上書き 壊れる 防げた 防げない 防げた 防げた
金額のセルをDeleteキーで消す 壊れる 防げた 防げない 防げない 防げた
先頭の受注の行を行ごと削除 壊れる 防げた 防げない 防げない 防げた
合計の上に行を挿入して1件足す 壊れる かえって困る 防げた 防げない かえって困る
数量の多い順に並べ替え 壊れない かえって困る 影響なし 影響なし かえって困る
数量を切り取って空き行に貼る 壊れる 防げない 防げた 防げない 防げた
よその表を書式ごと貼り付け 壊れる 防げた 防げない 防げない 防げた
数量に「1O」と打つ 壊れる 防げない 防げない 防げた 防げない

「かえって困る」は、普段の作業そのものができなくなったものです。前任者が作った集計表をどう引き継ぐかは、Excelマクロの引き継ぎにまとめています。

8つの操作と守りの結果の表。守りなしは8つ中7つで数式が壊れた。シートの保護は4つ、保護とテーブルは5つを防ぎ、行の追加と並べ替えはできなくなった8つの操作 × 守りなし+4つの守りの結果架空の受注表(9件)を Excel で操作し、数式が守られたかを記録守りなしシートの保護テーブル入力規則保護+テーブル数式に上書き壊れる防げた防げない防げた防げたDeleteで消す壊れる防げた防げない防げない防げた行の削除壊れる防げた防げない防げない防げた行の追加壊れるかえって困る防げた防げないかえって困る並べ替え壊れないかえって困る影響なし影響なしかえって困る切り取り→貼り付け壊れる防げない防げた防げない防げた書式ごと貼り付け壊れる防げた防げない防げない防げた型の違う入力壊れる防げない防げない防げた防げない試した環境:Excel 16.0 Windows (64-bit) build 20430.0。2026年10月16日、マクロの守りが手元で再現(scripts/figs/formula_protection.py)「かえって困る」は普段の作業ができなくなったもの。「影響なし」は守りがなくても壊れない操作
図1 8つの操作と、守りごとの結果。守りなしでは、並べ替えを除く7つで数式が壊れました。

8つの操作は、どんな表でどう試したのですか?

架空の受注9件の表を作り、マクロの守りが手元のExcelで1つずつ操作しました。試したのは2026年10月16日で、ExcelはMicrosoft 365の16.0(ビルド20430、64bit)です。表は、金額=数量×単価、税込=金額×(1+税率)で、12行目が合計です。正しい合計は18,610円です。

試した受注表の図。A〜D列が入力、E列の金額とF列の税込が数式、12行目が合計。税率のセルH2はデータの2行目と同じ行にある試した表の形(架空の受注9件)金額=数量×単価、税込=金額×(1+税率)、12行目に合計。税率のセルはデータの2行目と同じ行ABCDEFGH1日付品名数量単価金額税込税率2入力入力入力入力=C*D=E*(1+$H$2)0.13入力入力入力入力=C*D=E*(1+$H$2)4入力入力入力入力=C*D=E*(1+$H$2)5入力入力入力入力=C*D=E*(1+$H$2)6入力入力入力入力=C*D=E*(1+$H$2)7入力入力入力入力=C*D=E*(1+$H$2)8入力入力入力入力=C*D=E*(1+$H$2)9入力入力入力入力=C*D=E*(1+$H$2)10入力入力入力入力=C*D=E*(1+$H$2)11(空き)(空き)(空き)(空き)=C*D=E*(1+$H$2)12合計=SUM=SUM灰色の地が数式のセル、金色が税率のセル。マクロの守りが formula_protection.py で作った表
図2 試した表の形。税率のセルを、データの2行目と同じ行に置いています。

守りの付け方は、formula_protection.pyの次の数行です。シートの保護は、入力の列だけロックを外し、既定の許可のまま掛けました。入力規則は、数量を1以上の整数に、数式の列を「=FALSE」にしています。

ws.Cells.Locked = True
ws.Range('A2:D11').Locked = False      # 入力の列だけロックを外す
ws.Protect(UserInterfaceOnly=False)
lo = ws.ListObjects.Add(1, ws.Range('A1:F11'), None, 1)
lo.ListColumns(5).DataBodyRange.Formula = '=[@数量]*[@単価]'
ws.Range('E2:F11').Validation.Add(7, 1, 1, '=FALSE')

打つ・消す・切り取る操作は、Excelの画面にキーを送りました。行の削除と挿入、書式ごとの貼り付けは、プログラムからExcelを動かすCOMで操作しています。試した表は1つの形だけです。列の多い表やほかの版のExcelでは、結果は変わりえます。

シートの保護で防げる操作と、防げない操作は?

シートの保護は、8つのうち上書き・Delete・行の削除・書式ごとの貼り付けの4つを防ぎました。この試験では、ロックしたセルへの入力と貼り付けは、どちらも止められました。

守りなしでは、金額のセルの1,600円に5,000と打つと、合計が22,010円になりました。Deleteキーで消すと17,010円です。先頭の行を行ごと消すと、同じ行の税率のセルまで消え、税込の式が#REF!になりました。

保護で防げなかったのは、入力の列どうしでの切り取りと貼り付けです。数量の200を空き行へ移すと、元の行にある金額の式が、貼り先のセルを指すようになりました。元のセルに999を入れ直しても、金額は1,600円のままです。エラーは出ません。

貼り先の行の金額も#REF!になりました。数量に「1O」と打つ間違いも、入力の列なので通ります。

困るのは、行の追加と並べ替えもできなくなることです。どちらも毎日の作業です。Microsoftは、許可の設定に関係なく、ロックしたセルを含む範囲は並べ替えられないと説明しています。シートの保護は「セキュリティ機能として意図されたものではありません」とも書いています。

テーブルと入力規則は、何を防ぎますか?

テーブルは行の追加と切り取りに強く、入力規則は打ち間違いに強いという結果でした。得意な操作が違います。どちらも、数式のセルへの上書きや削除は止めません。

テーブルでは、合計の上に行を足すと金額の式が自動で入り、合計は19,610円になりました。守りなしでは足した行の金額が空のままで、合計は18,610円から動きません。切り取りと貼り付けでも、式が「[@数量]*[@単価]」の形のまま残り、999×8で7,992円を正しく出しました。

入力規則は、数量の「1O」を止めました。4つの守りの中で、ここを止めたのは入力規則だけです。数式の列の「=FALSE」も、打ち込みによる上書きは止めます。

一方で、Deleteキーで消すと数式は消えました。よその表を書式ごと貼ると、金額の式は値の1,440に置き換わっています。Microsoftも、コピーやオートフィルで入れた値には入力規則のメッセージが出ないと書いています。

入力規則を付けたあとは、既存の間違いは自動では分かりません。規則に合わないセルを確かめるには、[データの入力規則]の[無効なデータを円で囲む]を使います。

保護とテーブルを組み合わせると、どこまで防げますか?

シートの保護とテーブルを組み合わせると、8つのうち5つを防げました。単独で最も多かったシートの保護の4つより、切り取りと貼り付けの1つが増えています。

守りごとの結果の横棒グラフ。防げた数はシートの保護4、テーブル2、入力規則2、保護とテーブル5。かえって困るは保護と保護+テーブルで各2守りごとの結果(8つの操作のうち)防げた防げないかえって困る影響なしシートの保護422テーブル251入力規則251保護+テーブル512数は判定の件数(計算値)。守りなしでは8つのうち7つで数式が壊れた。2026年10月16日、マクロの守りが Excel で再現
図3 守りごとの判定の数(8つの操作のうち)。組み合わせても、行の追加と並べ替えの2つはできなくなります。

残る弱点は2つです。1つは打ち間違いで、数量の「1O」は入力の列なので通ります。

もう1つは行の追加です。テーブルに行を足そうとすると「シートが保護されているため、テーブルの機能は使用できません」と出ます。保護で行の挿入を許可しても、この表では変わりませんでした。

私が共有の表を作るときは、入力のテーブルと集計の数式を別のシートに分けます。集計のシートだけを保護し、入力のテーブルには入力規則を付けます。入力のシートは保護しないので、行を足す・並べ替える作業は残ります。マクロの守りでは、この分け方を引き継ぎ書にも書いておきます。

引き継ぎ書には、守りの何を書きますか?

書くのは3つです。どのシートを保護しているか(保護しているシートと、していないシート)。保護のパスワードを誰が持ち、どこに置くか。入力のテーブルと入力規則がどのシートのどの列に付いているか。パスワードはMicrosoftでは回復できないため、置き場所を決めて書いておきます。書き方はVBAの引き継ぎ書のひな形にあります。

このサイトで相談するには?

数式が壊れがちな共有の表も、マクロの守りで、どこを守るかを一緒に見ます。何をどう頼むか決まっていなくても大丈夫です。御社のやり方に合わせて、進め方を一緒に考えます。

準備は要りません。無料で相談するからお送りください。返信は最短当日です。

よくある質問

シートの保護にパスワードを付ければ、中身は安全ですか?
いいえ。Microsoftはシートの保護を「セキュリティ機能として意図されたものではありません」と書いています。誤操作を防ぐ仕組みとして使います。
保護するときに並べ替えを許可すれば、並べ替えられますか?
いいえ、数式のセルを含む範囲は並べ替えられません。ロックしたセルを含む範囲は、許可の設定に関係なく並べ替えられないとMicrosoftは説明しています。
入力規則を後から付けたら、すでに入っている間違いも分かりますか?
いいえ、自動では知らせません。[データの入力規則]の[無効なデータを円で囲む]を使うと、規則に合わないセルに印が付きます。
パスワードを忘れたら、保護は外せますか?
Microsoftでは回復できません。外す人と置き場所を決め、引き継ぎ書に書いておきます。

この記事の実験・計算の条件

架空の受注9件の表。Microsoft 365 の Excel 16.0(ビルド20430、64bit)で、1つずつ手で操作。2026年10月16日。

出典

  1. Microsoft サポート「ワークシートの保護」(2026年10月16日確認)
  2. Microsoft サポート「データの入力規則について」(2026年10月16日確認)
  3. Microsoft サポート「セルにデータの入力規則を適用する」(2026年10月16日確認)
  4. Microsoft サポート「Excel テーブルで集計列を使用する」(2026年10月16日確認)