Excelシートの保護時にデータの並び替え

このQ&Aのポイント
  • Excelシートの保護時にデータの並び替えを行いたいと考えています。
  • 使用する予定のExcelは2003と2007です。
  • セルのデータを変更させたくないのでシートの保護を行うことになり、その上でオートフィルタでの絞り込みや並び替えは使用したいという状況です。
回答を見る
  • ベストアンサー

Excelシートの保護時にデータの並び替え

Excelシートの保護時にデータの並び替えを行いたいと考えています。 使用する予定のExcelは2003と2007です。 セルのデータを変更させたくないのでシートの保護を行うことになり、 その上でオートフィルタでの絞り込みや並び替えは使用したいという状況です。 Excelシートを保護する時のオプションで、次の4つにチェックをしました。 ・ロックされたセル範囲の選択 ・ロックされていないセル範囲の選択 ・並べ替え ・オートフィルタの使用 オートフィルタの絞り込み表示は使用できましたが、並び替え時に保護の警告が表示されます。 シート上のセル全てのロックを解除して上記を行うと並び替えは出来るのですが、 データが変更できてしまうので意味がありません。 VBAでは制御可能という場合、マクロを無効にして起動された場合には 並び替えやオートフィルタが使用できなくなるので、出来るだけ避けたいと思います。 (できればVBAでの制御を行わずに、) 実現可能なのでしょうか? 教えて下さい。お願い致します。

  • jobvba
  • お礼率60% (166/274)

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

オートフィルタは使えるので問題は並べ替えだけです。 しかし保護されたセル範囲を並べ替える事はできません。なので実現は不可能です。 #シート保護時に「並べ替え」のチェックを入れなければ,そもそも並べ替えはできません #チェックを入れても,保護されたセルを並べ替える事はできません #保護されたシートで,保護されていないセル範囲だけが並べ替えできます。 ヤリタイ事の全てを実現したければ,マクロを併用し,有効にしないで開いたのでは何も出来ないよう仕込んでおくぐらいと思います。 作成例: ThisWorkbookのシートに Private Sub Workbook_BeforeClose(Cancel As Boolean) Worksheets("Sheet1").Protect Password:=123 ThisWorkbook.Save End Sub Private Sub Workbook_Open() Worksheets("Sheet1").Unprotect Password:=123 End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Application.EnableEvents = False Application.Undo Application.EnableEvents = True End Sub などのように仕込み,さらにパスワードを見られないようにVBAProjectのプロパティで表示を保護しておくなどで。 #マクロからの操作は有効でシートを保護し,並べ替えだけマクロで行わせるような手もありますが,フツーの操作では出来ないという事なのでかえって使いにくいと考えます。

jobvba
質問者

お礼

回答ありがとうございます! やっぱりそうですよね・・・了解しました。

関連するQ&A

  • Excelシートの保護以外で編集禁止は可能?

    Excelシート上でデータの編集禁止を行いたいのですが、シートの保護以外でできますでしょうか? 表があって、オートフィルタでデータの絞り込みが出来て、 セルをダブルクリックすると特定の処理が行われる、ということをやりたいのですが、 シートの保護をしてしまうと、オートフィルタの絞り込みが出来なくなります。 オートフィルタの代替として絞り込みのユーザインタフェースを 何かしら考える(VBA等で作成する)のは、出来ればやりたくないです。 何かしらの実現方法をご教示して頂けると非常に幸いではありますが、 取り敢えず、できる、できないという回答を頂けるだけで構いません。 まだ、方向性を考えている段階です。 以上、宜しくお願い致します。

  • エクセルの並び替えと保護について

    セルを保護しているとオートフィルターや並び替えが出来ません。 変更できない列(又はセル)がある状態でもオートフィルターの機能(又はそれに類ずる機能)を使用したいのですが、なにかいい方法はありませんでしょうか?

  • シート保護してても並び替えをしたい。

    添付画像を載せましたが、残高には関数があり、その列だけはシート保護をかけてあります。 保護のかけ方は、A~Dの1行目も含め最下行までです。 あとのA~D列は入力できるのですが、「このシートのすべてのユーザーに許可する操作」 で、「並び替え」にチェックしてあるのですが、A1の“年月日”にセルを置いて<昇順で並び替え>をやるのですが、保護がかかっているため並び替えできません。 VBAではなく一般操作の範囲でなんとか並び替えができるようにならないでしょうか。

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

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

  • Excel でのデータの並べ替えについて

    会員情報の表を作りました。( Excel 2003 ) 「会員番号」「会員名(カナ)」の先頭行にオートフィルターを設定し、「会員番号」「会員名(カナ)」で並べ替えをできるようにしています。 データ入力等で不必要なセルを触らないように「シートの保護」を設定したのですが、オートフィルターによる並べ替えが出来なくなってしまいました。 「▽」をクリックするとメニューが出るのですが、「~並べ替え」をクリックすると「変更しようとしているセルは~読み取り専用となっています。~」のメッセージが出ます。 オートフィルターを使えるようにする方法を教えてください。 (Excelのバージョンは 2003です) セルの書式設定で「ロック」は指定していません。 「シートの保護」での設定。  □ ロックされていないセル範囲の選択  □ 並べ替え  □ オートフィルターの使用 にチェックを入れています。

  • シート保護をしなくともデータが書換えられないようにする方法

    No.435423でオートフィルターの質問をした者です。もっと大事な質問がありました。 オートフィルターを使うためにはシートに保護をかけられないということがわかりました。これではまずいんです。 保護をかけてもオートフィルターが使える方法がありますでしょうか? または、シート保護をしなくともデータが書換えられないようにする方法はありますか? データの表のセルに入力規則でたとえば「1000文字以上の文字数」と指定して事実上書換えられなくしようかと思いましたが、これでもデータの削除は出来てしまい、困っています。

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

    エクセルの「シートの保護」について教えてください。 特定のシートのみ、保護したいと思っています。 そのシートの一定の範囲には、入力のみを許可したいです。 というのも、他の範囲(保護したい範囲)には、数式やvbaが設定されており、むやみやたらに「切り取り」や「行や列の削除」をされると困るからです。 そこで、 入力を許可する範囲を選択 →セルの書式設定 →保護のロックを外す →シートの保護 →「ロックされていないセル範囲を選択」を選択 しました。 この状態でマクロを実行すると、エラー1004(保護されたシートに対してこのコマンドは使用できません)とエラーが出ました。 エラー箇所は以下のとおりです。 Intersect(Worksheets("sheet1").Range("C5").CurrentRegion, Worksheets("sheet1").Rows("5:65536"), Worksheets("sheet1").Columns("C:T")).Select (質問1) ロックを外し、その後にシートの保護をする際、「全範囲を選択してから」シートの保護を行うものなのでしょうか。 それともシートの保護をすれば、自動的に、ロックを解除した範囲以外(全範囲)で保護したことになるのでしょうか。 「全範囲を選択してから」シートの保護をすると、ロックを外したセルを選択しても、アクティブセルが罫線で囲われずどこを選んでいるのか分からなくなってしまったので。 もし、あえて全範囲を選択する必要がないなら、それでいこうと思っています。 (質問2) 上記エラーを解消するには、どうしたら良いのでしょうか。 全範囲を選択できないように保護していることが原因かと思い、全範囲について「シートの保護→ロックされたセル範囲の選択」を選んでもエラー解除できませんでした。 また、Intersect.Selectの一行上に「ThisWorkbook.Unprotect」と追加しても解除できませんでした。 2つも質問して申し訳ありませんが、ご存知の方はご教授お願いします。 よろしくお願いします。

  • エクセル シートの保護とオートフィルタの両立

    お世話になります。 エクセルにおいて、入力が必要なセル以外をロックしつつ (=シートの保護)、同時にオートフィルタを機能させることは できないでしょうか? 何卒ご教示くださいますよう、宜しくお願い致します。

  • EXCEL VBAで条件付き保護について

    VBA初心者です、よろしくお願いします。 列Eでオートフィルタを使用可能と設定したいので、下記のようにしましたが、「シートの保護を設定」のステップを終えた後オートフィルタも使用できません。 「AllowFiltering:=True」でEXCELのオートフィルタの使用にチェックを入れた状態になると考えていましたが、思うようになりませんでした。 「シートの保護を設定」のステップがおかしいと思うのですが、わかりません。 教えてください。 ------------------------------------------------------ Private Sub Auto_Open() '一旦、シート保護を解除 ActiveSheet.Unprotect Password:="AAA" 列Hのデータを重複データを無視で列Oに抽出 セルH2は「入力規則-リスト」~列Oのデータを使用   ・   ・   ・ ' シート保護を設定 ActiveSheet.Protect Password:="AAA", UserInterfaceOnly:=True, AllowFiltering:=True End Sub

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

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

専門家に質問してみよう