【エクセル】シート保護の実用的な使い方
他の人に使ってもらう様式をエクセルで作る場合、数式や書式が壊れないように「シートの保護」をかけることが多いです。
ところが、何も考えずにシート保護をかけると、制約が強すぎてシートが使いにくくなってしまいます。
そこで、この記事では、
- シート保護をかけると、どのような制約が生じるのか
- シート保護と操作性のバランスを取るには、どのような設定がいいか
を考えてみます。
説明に使うフォーマット
今回、サンプルで紹介したいのは、次のようなデータを入力するシートです。
この表に、シート保護をかけて、シートが壊れにくいように、かつ、使いやすいような設定をしていこうと思います。
シート保護の基本
シート保護設定は、次の2つの設定を組み合わせて行います。
1. 保護するセルの選択
最初に、セルごとに「保護するかどうか」の設定をします。
対象セルで右クリック→「セルの書式設定」から、「保護」タブを選びます。
そして「ロック」の欄にチェックを入れることで、そのセルに保護がかけられます。
なお、「セルのロック」は、現段階では有効になっていません。
次に説明する「シート保護」の操作をした後で、はじめて有効になることに注意してください。
2. シート保護時の設定
次の設定は、シート保護をするときの設定です。
画面上部のメニュー(リボン)から、「校閲」→「シートの保護」を選択すると、次のような画面が表示されます。
ここで、「シートとロックされたセルの内容を保護する」をチェックすることでシート保護がかけられます。
また、その下には「このシートのすべてのユーザーに許可する操作」を設定するチェックボックスがあります。
「シート保護」をするときには、「このシートのすべてのユーザーに許可する操作」をどう設定するかが重要です。
「このシートのすべてのユーザに許可する操作」の設定
その名のとおり、どの欄にチェックを入れるかで、ユーザに許可する操作を変えられます。
少し前に説明したセルのロックでは、セルの値を変更できるかどうかの設定しかできませんでした。
一方で、「このシートのすべてのユーザに許可する操作」の設定では、「セルの値の変更」以外の操作について許可・不許可の設定をすることになります。
よく使う項目の概略を説明します。
セルのロックに「関連した」設定 | |
---|---|
項目 | 内容 |
ロックされたセル範囲の選択 | チェックをはずすと、ロックされたセルを選択できなくなります。
単にセルが選択できなくなるだけでなく、通常、セルを選択した後に行う「すべての操作」ができなくなる、というところが重要です。 (セルをロックした場合の挙動例) 例2: |
ロックされていないセル範囲の選択 | 「ロックされていないセル」を選択できなくします。
通常、「ロックされていないセル」は選択できないと困るため、この欄のチェックは入れておきましょう |
セルのロックと「無関係」の設定 | |
項目 | 内容 |
セルの書式設定 | セルの書式を変更できます |
列の書式設定 | 列幅などを変更できます |
行の書式設定 | 行の高さなどを変更できます |
列の挿入 | 列が挿入できます |
行の挿入 | 行が挿入できます |
列の削除 | 列を削除できます |
行の削除 | 行を削除できます |
並べ替え | 並べ替え機能が使えます |
オートフィルターの使用 | オートフィルターが使えます |
上記設定のうち、2つめの表(=《セルのロックと「無関係」の設定》という表題の表)の設定は、ロックしていないセルにも適用されることに注意してください。
たとえば、「行の挿入」のチェックをはずすと、セルのロックがされている・されていないとは無関係に、すべてのセルで「行の挿入」ができなくなります。
実際にシート保護を設定する
それでは、実際にシート保護を設定してみます。
シート保護を設定したエクセルシートは、下記からダウンロードできますので、実際の操作感を試してみてください。
このファイルには、シート名「1」から「5」まで、計5つのシートが入っています。
シート名は、下記のタイトル番号と合わせていますので、実際にシートを操作しながら、下記解説をご覧ください。
このファイルにはマクロが入っていますのでご注意ください。
なお、「1」~「4」はマクロを使っていませんので、マクロを無効化しても試して頂けます。
シート1. 一番シンプルな設定
まずは、一番シンプルに、次のようにシート保護をかけてみます。
- セルのロック
-
10行目(タイトル行)と、それより上の行のセルに「ロックをかける」
- このシートのすべてのユーザに許可する操作
-
表が壊れるリスクを最小限にするため、行の挿入・削除も禁止する設定にします。
- 「ロックされたセル範囲の選択」の「チェックをはずす」
- 列挿入・削除は禁止
- 行挿入・削除も禁止
この設定では、表が壊れるリスクはほとんどありません。
ただし、すべての行で、行の挿入・削除を禁止しているため、非常に使いづらくなってしまいました。
シート2. 行挿入・削除を許可する
上記設定では、あまりに使いにくいので、少し設定を変えます。
ロックするセルの設定は全く同じです。
一方で、「このシートのすべてのユーザーに許可する操作」のほうは、行の挿入・削除を許可するように変更しました。
これで、随分、表の使い勝手がよくなります。
1行目~10行目までの行挿入・削除をしたら表が壊れないか?
行の挿入・削除を許可してしまうと、表が壊れてしまわないか不安ですが、今回のケースでは、ほとんどの場合、表が壊れる心配はありません。
なぜなら、現状では、1行目~10行目までは「セルのロック」のせいで、セルが選択できないからです。。
1行目~10行目を選択することができないので、行の挿入・削除機能を許可しても1行目~10行目に行の挿入・削除をすることはできないのです。
このように、「行の挿入・削除は許可する」代わりに、
- 行の挿入をさせたくない行の「全セル」に「セルのロック」をかけて
- 「このシートのすべてのユーザに許可する操作」の設定で「ロックされたセル範囲の選択」のチェックをはずす
ことで、特定の行だけ、行の挿入・削除を防ぐことができます。
Ctrl+Home、Ctrl+↑などのショートカットキーが使えない
ただし、この状態でも、まだ、使い勝手はあまりよくありません。
実は、この表の状態では、Ctrl+Home、Ctrl+↑のショートカットキーが使えません。
たとえば、F15セルを選択した状態で、Ctrl+Home、Ctrl+↑を押しても、まったく反応しません。
なぜ、反応しないかというと、これらのショートカットキーで移動する移動先のセルが、ロックされていて選択できないからです。
シート保護を解除すると、それぞれのショートカットキーを押すと、下記セルに移動します。
Ctrl+Home | A1セル |
Ctrl+↑ | F10セル |
ところが、シート保護がされていると、A1セル、F10セルともにロックがかかっているため、移動できないのです。
シート3. ウィンドウ枠を固定する
そこで、少し工夫をしていきます。
まず「Ctrl+Home」が使えるように表を改良します。
実は、「Ctrl+Home」は、ウィンドウ枠の固定をしている場合には、その固定しているセルに移動するという性質があります。
そこで、A11セルでウィンドウ枠を固定します。
すると、「Ctrl+Home」を押したときに、A11セルに移動するようになります。
※ウィンドウ枠を固定するとCtrl+Homeの飛び先が変わるという情報は、@shota_Excellentさんに、教えて頂きました。ありがとうございます!
シート4. タイトル行を選択可能にする
次に、「Ctrl+↑」も使えるようにしましょう。
そのためには、10行目を選択可能にするしかありません。
そこで、セルの書式設定から、10行目の「セルのロック」のチェックをはずして選択可能にします。
こうすることで、「Ctrl+↑」が使えるようになりました。
表が壊れるリスクが高くなる
ただし、使いやすくなった分、表が壊れやすくなってしまいました。
というのは、10行目は列タイトルが入力されているので、10行目を編集可能にすると、列タイトルを上書き入力される可能性が出てきてしまうのです。
また、10行目で行の挿入、削除をしても、簡単にレイアウトが崩れてしまいます。
シート5. VBAでタイトル行を選択不可、次の行で行挿入不可に設定する
どうしても、このような表が壊れるのを避けたいという場合には、マクロを併用しましょう。
次のソースコードを、シートモジュールに記入してみてください。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'選択範囲に10行目が含まれているとき
If Not Intersect(Target, Rows(10)) Is Nothing Then
'下記Select文で再度SelectionChangeイベントが発生しないようにイベント呼び出し不許可
Application.EnableEvents = False
'当初の選択範囲の一番左の列の11行目を選択
Cells(11, Target.Column).Select
'イベント呼び出し許可
Application.EnableEvents = True
End If
End Sub
10行目を選択しようとすると、上記マクロが動き、選択範囲が11行目に(強制的に)変更されます。
その結果、10行目が選択できなくなり、10行目に対する「値の書き換え」や「行の挿入・削除」もできなくなります。
操作性の良さとシートの壊れにくさのバランスを考えると、このあたりが落としどころだろうと考えています。
ファイルダウンロード
今回、サンプルとして使ったエクセルファイルです。
本文を見ながら、操作してみてください。
まとめ
エクセルのシート保護の機能を使うと、思わぬところに影響が出てしまいます。
いろいろな設定を試して、シートの壊れにくさと使いやすさの、ちょうどいいバランスを探ってみてください。
また、どれが使いやすかったか、私のtwitterアカウントまで、感想を頂けると、大変ありがたいです(^^)。