ShowAllDataのエラーを回避する方法

このQ&Aのポイント
  • Excelのオートフィルタを使用した後にデータを全て表示させるコマンドボタンを作成しましたが、全表示された状態でボタンを押すとエラーが発生します。
  • エラーの内容は、'1004'という実行時エラーメッセージで、WorksheetクラスのShowAllDataメソッドが失敗したことを示しています。
  • ShowAllDataメソッドの失敗を回避するには、一度フィルタを解除してからコマンドボタンを押す必要があります。別の方法としては、ShowAllDataメソッドを使用せずにフィルタを解除するVBAコードを追加する方法もあります。
回答を見る
  • ベストアンサー

ShowAllDataのエラーを回避したい

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

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

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

FilterMode プロパティが True のときに ShowAllData メソッドを発行すればよいのでは?   非表示になっている行があれば全行表示する。 Private Sub CommandButton1_Click() If ActiveSheet.FilterMode Then _ ActiveSheet.ShowAllData End Sub

Kanajii
質問者

お礼

うまくいきました!ありがとうございました。

関連するQ&A

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

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

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

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

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

    VBAが書かれているファイルと同階層にある、全てのエクセルファイルの全てのシートのオートフィルタを解除したいです。 初心者のため、手始めに「ファイル内の全てのシートのオートフィルタを解除(すべて表示)する」というコードを考えているのですが、 Sub すべて表示() Dim W As Worksheet For Each W In Worksheets ActiveSheet.ShowAllData Next W 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でちゃんと処理する方法はないでしょうか?

  • Excell : 「データ→フィルタ→全て表示」をマクロにする。

    Excellにて「データ→フィルタ→全て表示」をマクロにしました。既にフィルタがかかった状態でこのマクロを実行すると問題ありません。しかし、フィルタがかかっていない状態から実行すると「全て表示」が有効になっていないので、マクロ実行がエラーになってしまいます。 多分、以下のVBに「全て表示」が有効になっているかの判断を入れればいいかと思うのですが、その具体的なコードを教えてください。よろしくお願いします。 Sub 全て表示() ActiveSheet.ShowAllData End Sub

  • エラーメッセージを変更できますか?

    エクセルで在庫表の管理をしています。 ユーザーフォームで「抽出」ボタンと「すべて表示」ボタンを作成しましたが 既に”すべて表示”されている状態で「すべて表示」を実行すると 「実行時エラー'1004'」が表示されます(当然ですが・・・) このエラーメッセージを自作のメッセージボックスに変えたいのですが可能でしょうか? [すべて表示] Private Sub 抽出Buttonすべて_Click() ActiveSheet.ShowAllData End Sub [エラーになった場合変更したいメッセージ] Sub 表示エラー() MsgBox "すべて表示されています", vbOKOnly End Sub エラーメッセージの[終了]を、メッセージボックスの[OK]にしたいのですが。。。

  • コマンドボタンを押したときシート2のa行の空白セルを選択したいのですが

    コマンドボタンを押したときシート2のa行の空白セルを選択したいのですが以下のやり方では”RangeクラスのSelectメソッドが失敗しました。”のエラーが出てしまいます。どこがいけないのか教えてください。 Private Sub CommandButton1_Click() Worksheets("sheet2").Activate Range("a65536").End(xlUp).Offset(1).Select End Sub ちなみに、コマンドボタンはシート1にあります。 よろしくお願いします。

  • 複数のユーザーフォームをコマンドボタンにて表示・非表示させるには

    VBA勉強中のものです。 複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。 例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、   コマンドボタン1→ユーザーフォーム1を表示   コマンドボタン2→ユーザーフォーム2を表示   コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。  そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。   どなたか、どのようにしたらいいかご教授ねがいます。 サンプルコード) --------------------------------------------------- 'UserForm1のコード Private Sub CommandButton2_Click() Call UserForm2_show UserForm1.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm1.Hide End Sub ---------------------------------------------------- 'UserForm2のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm2.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm2.Hide End Sub ------------------------------------------------------- 'UserForm3のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm3.Hide End Sub Private Sub CommandButton2_Click() Call UserForm2_show UserForm3.Hide End Sub ------------------------------------------------------------ '標準モジュール コード Sub UserForm1_show() UserForm1.Show End Sub Sub UserForm2_show() UserForm2.Show End Sub Sub UserForm3_show() UserForm3.Show End Sub

  • フィルタを解除してA1セルを選択<マクロ>

    EXCEL2002を使用しています。 以下のようなマクロで、フィルタを解除してA1のセルを選択するようにしたいと思いました。 Sub Macro1() ActiveSheet.ShowAllData Range("A1").Select End Sub フィルタがかかっている状態で実行すれば問題ないのですが、かかっていない状態で実行するとエラーになっていまいます。 フィルタがかかっていない状態の場合は単にA1を選択するようにしたいのですが、どのようにしたらよいでしょうか? よろしくお願いします。

  • なぜShowAllDataだとうまく行かないのでし

    なぜShowAllDataだとうまく行かないのでしょう? 「オートフィルタがかかってるなら解除する」 と言うコードを勉強しているのですが Sub a() If ActiveSheet.AutoFilterMode = True Then ActiveSheet.ShowAllData End If End Sub とすると、実行時エラー1004になります。 Sub b() If ActiveSheet.AutoFilterMode = True Then ActiveSheet.AutoFilterMode = False End If End Sub すると正常に動きます。 ActiveSheet.ShowAllData= True にしてもダメでした。

専門家に質問してみよう