• ベストアンサー

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

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

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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を使ったのは例なので、差し障りのないセルを使ってみて下さい。ご参考に。

shishishishi
質問者

お礼

遅くなりましたが、ありがとうございました。 大変、役に立ちました。

その他の回答 (1)

  • mneko
  • ベストアンサー率33% (46/139)
回答No.1

次の方法は如何でしょうか? >保護をかけてもオートフィルターが使える方法がありますでしょうか? 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」をクリックすると条件のデータが新しいシートに   抽出できますので、元の大事なシートデータをいらわなくとも   出来ます。 わかりにくい点が有りましたら、補足で質問ください。

shishishishi
質問者

お礼

遅くなりましたが、ありがとうございました。 役に立ちました。

関連するQ&A