• ベストアンサー

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

win2000、エクセル2000を使用しています。 新しいマクロの記録でフィルタオプションの設定とフィルタの全て表示の設定をしました。フィルタオプションの設定は以下の通りです。   リスト範囲→A10~P500   検索条件範囲→A1~P2 そしてボタンをそれぞれ作成してマクロの登録をしました。 この状態では、なんの問題もなく動くのですが、検索条件範囲だけロックのチェックをはずしてシートの保護をかけると、検索は出来るんですが、解除の時にエラーがでます。   実行時エラー'1004':   WorksheetクラスのShowAllDataメソッドが失敗しました。 というエラーです。 エラーが出ず、マクロが動くにはどうしたらよいのでしょうか? おわかりになる方がいましたら、よろしくお願いいたします。

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

  • ベストアンサー
  • kmb01
  • ベストアンサー率45% (63/138)
回答No.4

シートに保護がかかった状態だと、 データー>フィルター>すべて表示、も灰色ですし、 ShowAllDataも実行できないようです。 ShowAllDataの直前直後にUnprotect、Protectを 入れるしかないと思います。

n-shan
質問者

お礼

ありがとうございました。 やはり皆さんがおっしゃるようにシートの保護がひっかかっていました。 フィルタのすべて表示の前にシートの保護を解除するというひと手間をかけてあげるとうまくいきました。

その他の回答 (3)

  • gootaro3
  • ベストアンサー率14% (1/7)
回答No.3

 NO.2のものですが、 フィルターの答えは抽出範囲に書き出す為、 その時抽出範囲がロックされていると書き込めない 為、エラーが起こるのだと思います。  マクロの問題ではないかも知れません。  マクロを作る前に抽出範囲を保護した場合と しない場合を手動で確かめてみると解るかも知れません。

n-shan
質問者

お礼

ありがとうございます。 保護しないとうまくいくんですよ。これが なにか方法を考えてみます。

  • gootaro3
  • ベストアンサー率14% (1/7)
回答No.2

リスト範囲の保護をはずすと動くのではないでしょうか

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

シートの保護が原因で エラーになっているのかも しれません。

n-shan
質問者

お礼

早速お返事ありがとうございます。 うーむ、そうですか。 別な方法を考えてみます。

関連するQ&A

  • エクセルのマクロの質問です。

    オートフィルタを使ってデータを検索しているのですが、ファイルを閉じる時には自動的に「全て表示」にして閉じたいと思います。 試しに下記のマクロで実行してみたのですが、 Sub Auto_Close() ActiveSheet.ShowAllData End Sub フィルタで検索していれば自動的に「全て表示」になって問題なく閉じる事ができるのですが、最初から「全て表示」になっていると失敗し(当然ですよね)下記のエラーメッセージが出ます。 実行時エラー'1004': worksheetクラスのshowAllDataメソッドが失敗しました。 そこで、「全て表示」になっている時はそのまま閉じるを追加してマクロを完成させたいのですが、どうすればいいのでしょうか? 教えて下さい。お願いします。

  • 条件に一致しない行を全て削除した場合「ActiveSheet.ShowAllData」がエラーになる

    条件に一致しない行を全て削除し、フィルタモードを解除したいのですが エラーになってしまいます。 下記のコードを実行して 1つでも条件と一致する「あああ」があれば ActiveSheet.ShowAllData を実行してフィルタの解除ができるのですが 「あああ」がない時は 「実行時エラー1004 workSheetクラスのShowAllDataメソッドが失敗しました。」 となってしまいます。 Selection.AutoFilter Field:=1, Criteria1:="<>あああ" 'あああと等しくない Rows("2:65536").Delete ActiveSheet.ShowAllData そしてフィルタの青い三角マークをクリックして「すべて」を選んでも青いままです。 現在は「On Error Resume Next」で対応していますが、VBAでちゃんと処理する方法はないでしょうか?

  • エクセルのVBAのことで教えてください

    教えてください。 会社でエクセルを使って客先の住所録を作成しています。 オートフィル機能解除と、CtrlキーとHomeキーを同時に押した状態の機能を持たせたボタンをつくりたいと思っています。 Private Sub CommandButton1_Click() ActiveSheet.ShowAllData Range("A3").Select End Sub コードを上記のように書いたのですが、オートフィルタ機能を使って抽出作業がされていない画面に対してこのボタンを押すと、実行時エラーがでて、 WorksheetクラスのShowAllDataメソッドが失敗しました と表示されてしまいます。 オートフィルタ機能を使っていない状態の画面や、左上のセルが選択されている状態でも、このボタンを押した場合、エラーメッセージがでないようにしたいのですが、可能でしょうか?教えてください!

  • フィルタオプションとシートの保護

    Excel2003を使用して、あるシートに以下の設定を行なっています。 (1) 「入力規則」のドロップダウンリストからデータを選択入力する設定 (2) (1)で選択入力されたデータを抽出条件にしたフィルタオプションを設定(抽出先は指定した範囲) (3) 「マクロの記録」で(2)の作業を記録し、作成したマクロにボタンを作りボタンを押すと抽出を実行するよう設定 ※シート1に元データがあり、シート2が問題のシートになります。 このシートを保護し、他者に変更されないようにしたいのですが、保護をしていると抽出ができなくなってしまいます。 オートフィルタなら有効にする設定があるようですが、フィルタオプションは有効に出来ないのでしょうか? 他のシートを抽出先にせず、これらを実行したいのですが…。 何か良い方法があればご伝授願います。 尚、今回マクロを設定してはおりますが、実際に自分で記述して書くほどの知識はありません。 もしもマクロを使用しなければならない場合はお手数ですが、その詳細も教えて頂ければ幸いです。 宜しくお願い致します。

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

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

  • エクセル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つも質問して申し訳ありませんが、ご存知の方はご教授お願いします。 よろしくお願いします。

  • 【ExcelVBA】同一フォルダ内のオートフィルタを解除したい

    VBAが書かれているファイルと同階層にある、全てのエクセルファイルの全てのシートのオートフィルタを解除したいです。 初心者のため、手始めに「ファイル内の全てのシートのオートフィルタを解除(すべて表示)する」というコードを考えているのですが、 Sub すべて表示() Dim W As Worksheet For Each W In Worksheets ActiveSheet.ShowAllData Next W End Sub とすると、 実行時エラー1004 WorksheetクラスのShowAllDataメソッドが失敗しました となってしまいます。 何がいけないのでしょうか?

  • ShowAllDataのエラーを回避したい

    EXCELでオートフィルタを使った後に、データを全て表示させる為のコマンドボタンを作りました。 問題なのは、フィルタがかかっている状態でこのボタンを押すとデータが全表示されるのですが、全表示されている状態で押すと以下のエラーになってしまいます。   実行時エラー'1004':   WorkSheetクラスのShowAllDataメソッドが失敗しました。 コマンドボタンのプログラムは以下のとおりです。   Private Sub CommandButton2_Click()   ActiveSheet.ShowAllData   End Sub 不勉強なのは承知ですが、回避方法を教えて頂けないでしょうか。

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

    すべてのシートを保護してくれるマクロを教えてほしいのですが、機能として 「ロックされていないセル範囲の選択」と「セルの書式設定」の二つの機能を許可したものを教えてください。また、逆にすべてのシートの保護を解除するマクロもお願いします。 エクセル初心者のため、見当はずれなことを聞いていたら申し訳ありませんが、いくら探しても上記のようなものを探すことができず、、、。シートが80ほどあるもので、困り果てています。 よろしくお願いします。

  • Excelのオートフィルタ→シート保護→共有について

    Excel2000のブックを所内で共有で使用するのに 下記サイトのマクロを入力しました。 http://kiyopon.sakura.ne.jp/situmon/index.htm Private Sub Workbook_Open() Dim Sh As Worksheet For Each Sh In Worksheets Sh.EnableAutoFilter = True Sh.Protect UserInterfaceOnly:=True Next Sh End Sub 入力後ブックの共有を行い、一度閉じて 再度ファイルを開くと 実行時エラー'1004':'Protect'メソッドは失敗しました:Worksheet'オブジェクト とメッセージが出ます。 共有にすることにより、このメッセージが出ると思われますが、 恥ずかしながらマクロの事は全く分かりません。 ご教授よろしくお願い致します。

専門家に質問してみよう