- ベストアンサー
シート保護をしなくともデータが書換えられないようにする方法
No.435423でオートフィルターの質問をした者です。もっと大事な質問がありました。 オートフィルターを使うためにはシートに保護をかけられないということがわかりました。これではまずいんです。 保護をかけてもオートフィルターが使える方法がありますでしょうか? または、シート保護をしなくともデータが書換えられないようにする方法はありますか? データの表のセルに入力規則でたとえば「1000文字以上の文字数」と指定して事実上書換えられなくしようかと思いましたが、これでもデータの削除は出来てしまい、困っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
保護をしないで保護の機能を付加するマクロです。Sheet1で行ってみます。 まず、Sheet1に算式を1つセットします。差し障りのないところがいいですが、分かり易くする為にA1を使います。A1に =COUNTA(A2:A65536,B:IV) を入力します。A1以外の COUNTA の意味です。 標準モジュールに下記のコードを貼り付けます。 『HenkouFlg』がFalseの場合はSheet1の変更はできません。 マクロが機能した後、シートを変更したければ『Henkou_OK』を実行します。 『Henkou_NO』を実行すればそれ以降シートの変更はできなくなります。 ↓ Public HenkouFlg As Boolean '変更を許すモード Sub Henkou_OK() HenkouFlg = True End Sub '変更を許さないモード Sub Henkou_NO() HenkouFlg = False End Sub 次のコードをSheet1のコードウインドウに貼り付けます。 ↓ Private Sub Worksheet_Calculate() '変更を許すモードなら終わる If HenkouFlg Then Exit Sub On Error Resume Next With Application .EnableEvents = False .Undo .EnableEvents = True End With End Sub やっていることは、Calculateiイベント内で『Undo』を行っています。 A1を使ったのは例なので、差し障りのないセルを使ってみて下さい。ご参考に。
その他の回答 (1)
- mneko
- ベストアンサー率33% (46/139)
次の方法は如何でしょうか? >保護をかけてもオートフィルターが使える方法がありますでしょうか? 1.新しいシートを用意します。 これはオートフィルタで抽出するデータを格納する為と、抽出条件 を書くためです。 2.保護を掛けてあるシートの「項目」(オートフィルタで▼の出るところ) を1行コピーします。 3.新しいシートに、2でコピーしたものを2行同じ物を数行空けて貼り付け します。 4.新しいシートの3.でコピーした項目の中で抽出する条件となる「項目」 の下の行に条件を書きます。 例として 保護シートの項目が以下の時 A B C D E 1 番号 品名 単価 数量 金額 2 10010 ABC 100 1000 100,000 3 新しいシート(抽出条件を金額50000以上とします) A B C D E 1 番号 品名 単価 数量 金額 2 >=50000 3 4 番号 品名 単価 数量 金額 5.以上を用意して、新しいシートで「データ」->「フィルタ」 「フィルタオプションの設定」を選択します。 6.フィルタオプションの設定のダイアログが表示されますので、 ◎指定した範囲 ↑此処に必ずチェックを入れる。 リスト範囲[ □] ↑此処をクリックして保護している表のすべて 項目も含め(但し抽出するデータのみ)て指定 検索条件範囲[ □] ↑新しいシートのA1:E2を指定 (上の例で説明してます) 抽出範囲 [ □] ↑新しいシートのA4:E4を指定 (此処は項目行のみです) 7.「OK」をクリックすると条件のデータが新しいシートに 抽出できますので、元の大事なシートデータをいらわなくとも 出来ます。 わかりにくい点が有りましたら、補足で質問ください。
お礼
遅くなりましたが、ありがとうございました。 役に立ちました。
お礼
遅くなりましたが、ありがとうございました。 大変、役に立ちました。