エクセルVBA テーブルにも使える全シートのオートフィルターをクリア

プログラムを組んだ目的

ブックを閉じた時にオートフィルターの解除をするようにマクロを組んで次に使う人が使いやすくするためのマクロです。

テーブル機能を使っていてもクリアをすることができます。



プログラムの組み方



「Alt+F11」でVBAを開きます。

ThisWorkbook」をダブルクリックで開き、以下のプログラムを記述していきます。

Excelを起動した時にIMEも起動 ~3行マクロ
’イベントプロシージャの記述
Private Sub Workbook_BeforeClose(wb as Boolean)

Dim ws as Worksheet


’全シートを順番にactiveにするためのコード
For Each ws In Worksheets
	ws.activate

 
 ’もしフィルターモードがtrueならフィルターをクリア
	If ws.Filtermode = True Then
	  ws.ShowAllData
	End If

Next

End Sub





プログラムの説明

  1. イベントプロシージャを使ってブックを閉じた時にイベントが発生するように設定します。
  2. ワークシートを変数に代入する
  3. 「For Each」を使って全てのシートオブジェクトを順番に取得するための記述をする(wsは変数)
  4. 「ws.activate」 でシート1から順番にアクティブにしていく
  5. 「if文」でもしシートでオートフィルターが使用されていたら全てを表示するように記述(フィルターのクリア)
  6. 「Next」によって全シート文繰り返し処理を実施する



テーブルを使用していると、「AutoFilterMode」を「False」にしても解除ができなかったので作成してみました。

共有して使用するファイルだったので、次に使う人が使いやすくなると思います。

toyohiro

製造業で働く29歳。2019年6月からドットインストールでプログラミング学習開始。webアプリケーション製作をしてみたいと思い、2020年2月からrubyとrailsを学習中。今、目指していることはテレワークができるようになること。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です