• ベストアンサー

エクセルのセルの編集制限(保護)の仕方

HohoPapaの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.6

VBAを使わない(使えない)のであれば、 >多人数で同じシートを使用する という皆さんがそれぞれ、 入力する都度、入力したセルをロックする必要があります。 保護の機能は既に使っているとのことですので、 マクロでは、あらかじめ指定した範囲について 期待の保護が動作するようにしてみました。 なお、マクロの配置先は、添付画像のとおり、 workbookです。 また、 ソースコードにシート保護のパスワードを書き込むことになりますので ソースコードを利用者が覗けないようにする必要があります。 よかったら挑戦し、わからなければ聞いてください。 Private Sub Workbook_AfterSave(ByVal Success As Boolean)  Const RowS = 1       'ロック範囲開始行  Const RowE = 7       'ロック範囲終了行’  Const ColS = 1       'ロック開始列  Const ColE = 8       'ロック終了行  Const MyPassword = "hoge"  'パスワード  Const MySheet = "Sheet1"  '保護したいシート名  Dim RowCnt As Long  Dim ColCnt As Long    With ThisWorkbook.Sheets(MySheet)   .Unprotect Password:=MyPassword   For RowCnt = RowS To RowE    For ColCnt = ColS To ColE     If .Cells(RowCnt, ColCnt).Value <> "" Then      .Cells(RowCnt, ColCnt).Locked = True     Else      .Cells(RowCnt, ColCnt).Locked = False     End If    Next ColCnt   Next RowCnt   .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _     Password:=MyPassword  End With End Sub

akira0723
質問者

お礼

HohoPapaさん お手数をお掛けしております。 さて、時間ができたので早速下記をThisWorkbookにコピペしてみたのですが全くなにも起こらず、従来かけていた1-15行目だけが保護されています。 入力範囲は16行目以降500行目まで、列はAからHまでの8列です。 パスワードも聞いてきませんでした。 保護したいシート名は「入力表」です。 上の左窓には「Workbook」右窓には「AfterSave]と表示されています。 おそらく基本的なところだと思うのですが、これが当方の実力ですので宜しくお願いいたします。 このマクロを使う場合、元の保護設定は全て外すのでしょうか? 一応従来設定していた、「シートの保護」の設定と「入力許可範囲」の設定は解除してみたのですが同じでしたが。。。 Private Sub Workbook_AfterSave(ByVal Success As Boolean) Const RowS = 16 'ロック範囲開始行 Const RowE = 500 'ロック範囲終了行’ Const ColS = 1 'ロック開始列 Const ColE = 8 'ロック終了行 Const MyPassword = "hoge" 'パスワード Const MySheet = "入力表" '保護したいシート名 Dim RowCnt As Long Dim ColCnt As Long With ThisWorkbook.Sheets(MySheet) .Unprotect Password:=MyPassword For RowCnt = RowS To RowE For ColCnt = ColS To ColE If .Cells(RowCnt, ColCnt).Value <> "" Then .Cells(RowCnt, ColCnt).Locked = True Else .Cells(RowCnt, ColCnt).Locked = False End If Next ColCnt Next RowCnt .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _ Password:=MyPassword End With End Sub

akira0723
質問者

補足

いや~ご丁寧な回答痛み入ります。 必ずチャレンジしてみますが、今苦情対応で手が回らないので後日必ず試行し、結果報告(どうしても駄目そうならGive Up宣言)しますのでしばらく時間をください) おそらく再度の質問になると思います。 勝手ですがしばし時間をください。 先日顧客監査があり、入力場所以外(参照セルや計算式等)は保護がかけてあるが、既入力データ(入力範囲で保護されていないセル)の意図しない変更に対する対策を指摘されたものです。 つまり悪意のあるデータの改ざんの防止ではなく、ヒューマンエラーの防止が目的です。 よって必要時には他の人もいじれるようにパスワードも周知のものを使います。 他の顧客のデータ管理にも横展開できますので非常に助かります。

関連するQ&A

  • EXCELで特定のセル以外を保護するのには?

    完成したブックの特定のセル(年と月を入れるとそのカレンダーが表示されるなどの場合年とか月を入れるセル)だけ入力できてそれ以外のセルは入力や編集や上書きが出来ないように保護をかけるにはどうしたらいいのでしょう? シートの保護にすると全部のセルが入力不可になりますし、データのチェックをはずすと全部のセルの入力編集上書きが出来てしまいます。 読み取り専用とか書き込み禁止のパスワードを設定しても上書き保存がされないというだけで、入力編集上書きが操作上できなくなるというわけではないのですよね? 上書き保存は出来てもOKなのですが、関数などが入ってるセルを誤って消したりしないように操作上特定のセルだけしか入力編集上書きができないようにするにはどうしたら一番よいのでしょうか? よい方法をご存知の方がいらしたら是非教えて下さいm(__)m

  • エクセルの1つのセルだけを保護したい

    エクセル2010でシートの保護と編集可能なセルの指定方法(セルのロックを外してシート全体を保護する)は知っているのですが、計算式の入った数個のセルだけを保護したいのですが。 一応、セルの書式設定で1つのセルだけロックを外して、シート全体を保護してみたのですが、この方法では駄目でした。 簡単に目的の(飛び飛び)のセルだけを保護する方法を教えてください。

  • EXCEL保護シートで、Σを使いたい。

    EXCEL2002のシートに保護をかけた時に、Σがグレーアウトして表示されません。 表示させるには、どのようにすればよいでしょうか? Σを入力するセルは、ロックをかけておらず、タテ(列)の合計を計算させます。 保護されたシートのすべてのユーザーに許可する操作は 「ロックされたセル範囲の選択」「ロックされていないセル範囲の選択」「セルの書式設定」「列の書式設定」「行の書式設定」「行の挿入」「行の削除」「並べ替え」にチェックをいれています。

  • 保護をかけたセルを並べ替えたい

    誤入力が無いようにシートに保護をかけました。 その状態でセルを並べ替える方法を教えてください。 「シートの保護」から「このシートのすべてのユーザーに許可する操作」で「並べ替え」にチェックを入れたのですが、「変更しようとしているセルまたはグラフは保護されているため、読み取り専用になっています。」とアラートが出て並び替えをすることができません。 何か用方法はありませんでしょうか。 よろしくお願いします。

  • Excel - シート保護と並べ替え

    シート保護をかけたExcelのブックで、並べ替えだけは行いたいのですが、保護の時点で「並べ替え」の許可にチェックを入れても、「読み取り専用です」の旨のポップアップが表示され、並べ替えができません。 セルの書式設定で「ロック」のチェックを外せば並べ替えはできましたが、これだと編集も可能となるので、シート保護の意味がありません。 シート保護をかけた状態で、並べ替えだけ可能となるような設定の組み合わせが、他にありますでしょうか。 宜しくお願いいたします。

  • エクセル_特定範囲のセルの入力制限

    エクセルについて教えてください。 範囲指定したセルのパターンや罫線の変更はOKだが、削除・編集はできないようにする(削除・編集しようとすると禁止のメッセージが出る) という規則を付けたいのですが、シートの保護、マクロ等いろいろ試しましたがうまくいきません。 『ロック解除&シートの保護』だと罫線変更まで出来なくなってしまいます。 マクロは初心者です。こんなの↓を見つけてきましたが、セルごとの指定で範囲指定できません。また複数セルを選択してDeleteするとDeleteできてしまいます。 Const cnsRANGE_C1 = "$E$2" ' ここで指定する If Target.Address = cnsRANGE_C1 Then MsgBox "このセルの値は、変更・削除できません" Application.EnableEvents = False Application.Undo Application.EnableEvents = True どうぞよろしくお願い致します。

  • エクセルの保護されたシート内のデータの編集について

    エクセルでC~E列のみロックをはずしてシートの保護を行いました。この状態でC~E列のデータを含むすべてのデータの「並べ替え」や、列を「表示しない」などの操作を行いたいのですが、シート全体が保護されているためできません。うまく操作する方法はありますか?セルの値のみが保護される状態が理想です。

  • エクセルのシートの保護について

    今、エクセル2003でワークシートのデータを変更できないように、 シートの保護を設定しているところを今勉強しています。 ただ、あるセル範囲だけ、たとえばB4からD6の範囲は編集できるようにしたいのです。 それで、B4からD6の範囲は書式メニュー→セルの保護タブで、 ロックチェックボックスをオフにしました。 それから、ツール→保護→シートの保護で、シートを保護しました。 この時、B4からD6の範囲は、ロックをオフにしたので、 編集可能になるはずですよね? だけど、B4からD6の範囲意外のセルと同様、 セルの書式を変更できないんです。 これだったら、B4からD6の範囲のロックをオフにした意味が ないんじゃないでしょうか? ロックをオフにするとどう違うのでしょうか? よろしくお願いします。

  • 計算式を保護したシートの並び替えについて @excel2007

    あちこちに計算式が入ってるシートがあり、その計算式が保護された状態で、行を並べ替えたくていろいろ試してるのですが、どうしてもできません。どなたかアドバイスお願いいたします。現在の状態は、 シート全体を選択してから「セルの書式設定」「保護」で「ロック」のチェックをはずし、 F5キー「セル選択」で数式にチェックしてOK→「セルの書式設定」「保護」で「ロック」にチェック「表示しない」にチェック、 「書式」「シートの保護」を掛ける。※ ※このとき、最初にシートの保護をかけたときは「ロックされたセル範囲の選択」「ロックされていないセル範囲の選択」だけにチェックをいれてOKしたのですが、後に、行の並べ替えをする必要がでてきたため、いったん、 「校閲」→「シート保護の解除」で保護解除し、あらためて「シートの保護」→「ロックされたセル範囲の選択」「ロックされていないセル範囲の選択」「「並べ替え」にチェックをいれてOKしました。 ただ、これで並べ替えを実行しようと「データ」→「並べ替え」すると、エラーメッセージ 「変更しようとしているセルまたは・・・保護されているため読み取り専用となっています。・・・シートの保護解除をクリックして・・・」がでます。 (注)このシートについて、保護は計算式だけでいいのですが、並べ替えは、計算式の入ってる列も、計算式が入ってない列も行う場合があります。 また、マクロについては無知なので、ご了承ください。 よろしくお願いします。

  • エクセルのセルの保護

    ワークシートの一部分のセル表を入力禁止状態にしたいのですが。。。「ツール」の「保護」使っても、シート全体の保護はできるのですが、一部分というのがうまくいきません。お教えください。