• ベストアンサー

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

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

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

#01です。質問を読み損なっていました。 全てのフィールドに対して絞り込みを解除するという方法ではどうですか Sub Macro1() Dim idx As Integer  If ActiveSheet.AutoFilterMode Then   For idx = 1 To ActiveSheet.AutoFilter.Filters.Count    ActiveSheet.Cells.AutoFilter field:=idx   Next idx  End If  ActiveSheet.Range("A3").Select End Sub

0216maki
質問者

お礼

ありがとうございました! バッチリ出来ました!

その他の回答 (2)

noname#22222
noname#22222
回答No.2

同じことですが、エラートラップを利用する手もあります。 Private Sub CommandButton1_Click() On Error GoTo Err_CommandButton1_Click   ActiveSheet.ShowAllData   Range("A3").Select Exit_CommandButton1_Click:   Exit Sub Err_CommandButton1_Click:   Resume Exit_CommandButton1_Click End Sub

0216maki
質問者

お礼

アドバイスありがとうございました。 コードをコピペさせていただきましたが、オートフィルタの抽出がされていない場合、左上のセルがアクティブになりませんでした。 でも、とても勉強になりました。ありがとうございました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

オートフィルタモードを確認する方法でどうですか? If Activesheet.AutoFilterMode Then  ActiveSheet.ShowAllData  Range("A3").Select End If

関連するQ&A